C ++ 함수 오버로딩
목적 주제
기능 과부하 학생들이 강의, 마스터의 장점을 이해하고 기능을 오버로드와 함께 조리합니다.
주제 발표
예 함수 오버로딩 도입
1) 데이터 타입 함수 오버로딩
예
상이한 데이터 유형의 절대 값 함수의 평가 (INT 타입, 플로트 식, 더블 형) 쓰기
용액을 순차적 INT 타입, 플로트 식되기 전에, 두 유형의 해당 기능을 담당
INT ABS1 ( INT (X)) { 경우 (X < 0 ), X = -x; 반환 } X를 플로트 ABS2 ( 플로트 X)를 { 경우 (X < 0 ), X = -x; 반환 X를} 이중 abs3 ( 더블 X)를 { 경우 (X < 0 ), X = -x; 반환 X를} INT 의 main () { COUT << ABS1 (- 1 ) << ABS2 (- 1.0F ) << abs3을 (- 1.0 ); 반환 0 ; }
상기 세 가지 기능을 관찰, 데이터 타입에 부가 완전히 동일하게 발견되지만 그 기능을 수행하는 세 가지 기능을 필요로한다.
토론 : 그렇게 할 몇 가지 단점은 무엇입니까
A는 : 닫지 간섭의 데이터 유형에 의해 기능을 언급하고, 문제를 쓰기 너무 많은 문제의 >>>>> 기능 이름이 너무 낮 읽을 수
당신이 사용하는 경우 함수 오버로드를 ,이 예는 작성해야합니다 :
INT ABS ( INT의 X) { 경우 (X < 0 ), X = -x; 반환 } X를 플로트 ABS ( 플로트 X)를 { 경우 (X < 0 ), X = -x; 반환 X를} 이중 ABS ( 더블 X)를 { 경우 (X < 0 ), X = -x; 반환 X를} INT 의 main () { COUT << ABS (- 1 ) << 복근 (- 1.0F ) << ABS (- 1.0 ); 반환 0 ; }
위에서 볼 수 있듯이,이 가독성을 위해, 큰 장점을 이름 공간의 오염을 방지하기 위해, 함수 이름의 수를 줄일 수 있습니다.
요소 번호 2) 함수 오버로딩
특히 회전 기능 과부하에 다음 코드를 읽기 :
보이드 F () { COUT << " 1 " << ENDL; } 공극 F ( INT X) { COUT << " 2 " << ENDL; } 공극 F ( INT의 X, INT의 Y) { COUT << " 3 " << ENDL; } INT 의 main () { F (); F ( 1 ); F ( 3 , 4 ); 반환 0; }
상술 한 바와 같이, 복수의 파라미터 수가 있기 때문에, 복수의 기능 소자의 기능이 잘 충족하도록, 오버로드 함수 유형을 사용하여 구현 될 수있다.
요약하면 :
기능 과부하 기능
함수의 다른 매개 변수는 1) 번호.
2) 함수 나 파라미터 입력 시퀀스의 다른 매개 변수의 종류.
함수의 과부하 장점
1) 과부하 늦은 동적 통화 기능을 용이하게한다. 요약 확장을 촉진 덜 중복 코드를 작성합니다.
기능과 유사한 기능이 다양한 복수의 파라미터로 구현 될 수 있도록 2) 함수는 과부하 기능 다형성 수있다.
사용 기능 오버로딩
다양한 상황 기능에 대한 필요성은 동일한 기능의 이름 함수 오버로드로 선언했다.
다음 코드
사용법 #include <iostream> 사용 스페이스 성병; INT ) (추가; // 分别对函数进行声明 INT 추가 ( INT A); INT 추가 ( 더블 A); 두 추가 ( int로 A, 더블 B)를; INT 주 () { ) (추가; (추가 5 ); (추가 2.0 ); 추가 ( 1 , 2.0 ); 반환 0 ; } INT의 추가 () { 반환 1 + 2; } int로 (ADD INT a) { 반환 A + 2 ; } int 형 (추가 더블 A) { 반환 A + (2) ; } 이중 추가 ( int로 A, 더블 B)을 { 반환 A + B; }
실험 주제
기입 기능은, 최대 값은 두 개 또는 세 개의 정수 또는 실수의 합이 될 수있다.
문제 해결 방안 : 두 정수 세 정수의 네 종류의 실수 두 최대 값은 세 개의 매개 변수를 취득 할 때 최대 값 과부하에 의한 최대하지만,이 해결 될 수있는 기능 가능한 기능 세 실수 두 매개 변수는 기록 된 최대 값을 선택하는 기능이 사용되는
. (1) #INCLUDE <iostream> 2 은 USING 공간 STD] . (3) 의 INT 맥스 ( int로 I는 INT ; J) // 과부하 4. INT의 (최대 값 int , I을 int로 J, INT , K)를 // 파라미터들의 상이한 수를 5. 더블 맥스 ( 더블 I은 이중 J); // 다른 파라미터 형태 6. 더블 맥스 ( 더블 I, 더블 J, 더블 K) . (7) 의 INT 맥스 ( int로 , I를INT J) 8. { 9. 창 I> 난 J :? J; // 난 그렇지 J 복귀 J I보다 크면, 10 } . 11 (12)이된다 INT (최대 하는 int 난을 INT의 J는 INT K) (13)는 { 14 반환 맥스 ( 맥스 (I, J), K); // 선 및 I j를 비교, 마지막 비교기 K 15 } 16 . 17 번 맥스 ( 더블 I, 더블 J) (18)는 { 19. 창 I> J I : J;? // 나는 경우 그것은 그렇지 J 리턴 J I의보다 큰 20이다 } 21 인 22 배 최대 ( 이중 I, 이중 J, 더블 K) 23 { 24 반환 최대 (최대 (I, J), (K)); // 线比较난을和J, K最后比较 25 } 26 27 INT ) (주 28 { 29 COUT << 맥스 ( 1 , 5 ) << " " << 최대 ( 1.5 , 0.9 ) << " " << 최대 ( 5 , 3 , 7 ) << " " 30 << 맥스 ( 5., 3.1 , 7.5 ) << ENDL; 31 반환 0 ; 32 }