C ++ 함수 오버로딩

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 }

 

 

 

 

추천

출처www.cnblogs.com/LGboy/p/11530701.html