오버 기능 : 동일한 범위, 동일한 기능은 동일한 이름의 여러 기능들을 선언 할 수 있지만, 이들 파라미터의 형태의 함수로서 동일한 이름 (파라미터의 개수를 참조 형식이나 순서)는 달라야한다. 당신은 오버로드 된 함수는 다른 유형을 반환 할 수 없습니다 만에 의해.
1 #INCLUDE <iostream> 2 사용 스페이스 성병; 3 4 급 계산 5 { 6 공용 : 7 정적 INT GetSum ( INT A, INT의 b) 8 { 9 복귀 A + B; 10 } 11 정적 INT GetSum ( INT A, INT의 B, INT c) 12 { 13 리턴 A + B + C; 14 } 15 / * 정적 더블 GetSum (A INT, INT의 B) // 여기에만 반환 형식을 변경하고, 오버 기능은, 그것을 설명한다 때문이 16 { 17. ] 복귀 A + B 18이다 } * / . 19 정적 더블 GetSum을 ( 더블 A, 더블 B) (20)가 { 21은 리턴 A + , B (22)는 } 23는 정적 더블 GetSum ( 더블 A, 이중 B, 더블 C) 24 { 25 리턴 A + B + C; 26이다 } 27 }; 28 (29) INT ) (주 30 { 31 COUT << 계산 :: GetSum ( 5 , 6 ) << ENDL 32 << 계산 :: GetSum ( 1.1 , 2.1 , 3.3 ) << ENDL; 33 반환 0 ; 34 }
결과 : 11 6.5
과부하 연산자 : 연산자 오버로드는 키 연산자와 기호를 무시하는 운전자가 뒤에 이름, 함수 이름과 특별한 기능입니다. 다른 기능과 마찬가지로, 오버로드 된 연산자는 반환 형식과 인수 목록이 있습니다. 정상적인 또는 비 멤버 함수 클래스의 멤버 함수로서 정의된다 대부분 오버 연산자가 정의 될 수있다. 우리가 과부하 가정 "+", 우리는 비 멤버 함수의 클래스를 정의하는 경우가 반원 기능만을 전달할 필요가있는 경우, 우리는 각각의 동작을 위해 두 개의 매개 변수를 전달해야한다. 운영자 이유 과부하 나는 아주 나쁜 주인을 느끼고, 그래서 지금 일시적처럼 알고, 그것에 대해 깊이에 다시 올 수있는 기회를 가질 수있다. 말했다 방식 과부하 사업자에 대해 다음 연산자 연산자의 반환 형식 (매개 변수) {} 밤의 실현을 위해 : BOOL의 opreator - () {false를 반환;} ,이 기능은 멤버 함수를 오버로드 그 이유는 무엇입니까? 때문에 "-"우리는 적어도 인수를 필요로하지만 그것은 단지 자신의 클래스가 될 수있는 하나없는이 연산자.
. (1) #INCLUDE <iostream> 2 은 USING 스페이스 STD] . 3 . 4 급 Studnet . 5 { . 6 공용 : . 7 INT의 SUM = 0 ; . 8 INT SUM2 = 0 ; . 9 INT의 제수 = 0 ; 10 INT의 = 배당 0 ; 11. //이 과부하 두 변수의 함수를 합산들이 인수 달성 12된다 Studnet 운영자 / ( CONST가 Studnet & D)이 // 아래 및 const를 사용하여 설명하도록한다. 여기 반환 형식은 클래스 (13) { 14 Studnet STD; 15 std.sum + = d.dividend d.divisor 2 개 개의 변수가 추가 변수 // 16 std.sum2를 = 은이 -> + 배당 은이 -> 제수 // 클래스 자체 두 변수 또한 . 17 창 STD; 18이다 } (19). } (20)는 21이다 (22)는 지능 () 본체 (23)가 { 24 ; Studnet ST1 25 Studnet ST2; 26이다 Studnet ST3; 27 (28) st1.dividend = 5. ; 29 st1.divisor = . 6 ; 30 st2.dividend = 10 ; 31 st2.divisor = 20 ; 32 33 ST3 = ST2 / ST1; 34 COUT << st3.sum << ENDL 35 << st3.sum2 << ENDL; 36 반환 0 ; 37 }
우리는 결과를 살펴 보자 . 11 (30) , 우리는 매개 변수 D는 변수 ST1 및 (SUM) 클래스의 멤버 함수는 해당 값을 전달하는 파라미터이면, 설명의 기능을 오버로드되는 것을 발견 그 뒤에이 매개 변수 (ST1). 그리고 이것은 그 (ST2)을 의미한다. 왜 경우, 그것을이다 우리
INT의 A = 10 ; INT B = 10 ; a.add (B)는 동일하다 + B
이 자연스럽게 분명. 비 멤버 함수는 같은 이유이지만, 두 개의 매개 변수가 된 경우. 이리와 통화 CONST 및이 사용 믹스 : 및 복사 방지 데이터 값 전송에 참조에 의해 전달, CONST이 변경되는 데이터를 보호하는 것입니다. 기존의 값을 억제하면서 CONST 및 생성자 함수 호출 부하를 복사한다. 우리가 전달 된 값을 사용하는 경우 때문에, 매개 변수 인수는 카피 (복사)입니다.