C ++ 연산자 연구 노트 (눈, 피 객체와 숫자 연산자 오버로딩을) 과부하

바이너리 연산자

. (1) #INCLUDE <iostream>
 2  은 USING  스페이스 STD;
 3 개.  클래스 컴플렉스 {
 4.  공용 :
 . 5      착체 ( 더블 R & LT = 0.0 , 더블 I = 0.0 ) : 실시간 (R LT) IMAG (I) {} // 기본 생성자 비록이고 라고도 할 수있는 파라미터가 주어진다면 기본이지만, 좋은 습관이다
 6      
7      복합 운전자 + ( CONST 복합체 C2) CONST ; // + 
8  
9      복합 운전자 + ( INT 및 a) CONST ; //복잡한 실수 
10      
. 11      복합 운전자 - ( CONST 복합 C2 및) CONST ; // - 
12은  
도 13은      무효 표시 () CONST ;    // 복소 출력 
14  개인 :
 15       리얼;     // 복잡한 실수 부 
16      더블 IMAG;     // 가상 복수 부분 
(17).  }
 (18)이다  
.도 19 복잡한 복합 :: 연산자 (+ CONST 복합체 C2) CONST { // + 착체 
(20)는      복귀복잡한 (실제 +의 c2.real, IMAG + c2.imag);
21  }
 22  
23 복잡한 복합 :: 연산자 + ( INT 및 a) CONST { // 复数和实数+ 
24      ++ ;
25      리턴 (실제 + 복합 A, IMAG);
26  }
 27  
28 복잡한 복합 :: 연산자 - ( CONST 복합체 C2) CONST { // 复数- 
29       착물 (리얼 - c2.real, IMAG - c2.imag);
30  }
 31  
32  공극단지 디스플레이 : () CONST {
 33      COUT << " ( " << 실제 << " , " << IMAG << " ) " << ENDL;
34  }
 35  
36  INT의 주 () {
 37      컴플렉스 C1 ( 5 , 4 ), C2 ( 2 , 10 ), (C3);
38      INT의 B = 5 ;
39      COUT << " C1 = " ; c1.display ();
40      COUT <<" ; C2.display ();
 (41)가      C3 = C1 - C2;    // 사용 과부하 사업자 복소 감산을 수행하는 
(42)가      COUT << " C3 = C1 - C2 = " ; c3.display ();
 (43)는      C3 = C1 + C2는 ;    // 사용 과부하 연산자는 복소 가산기 완료 
44는      COUT << " C3 = C2 = C1 + " ; c3.display (),
 (45)      C3 = C1 + B; //이 복잡한 실제 합 주목 (복소 INT 변수 첨가) 한 다음, (복소 컴파일러 다시 복잡한 객체 클래스로 (5)의 복수를 생성 직접 가수 C1 = C3 + 5) 구별, 오직 하나 개의 파라미터, 즉 실수 부와 복잡한 클래스를 추가하는 
문제 생성자를 기본 생성자 (노란색 이상), I는, 문제는 추가 기능의 순서 의심을 쓰고 있지만 그것을 시도하지 발견, 결국 때문에, 다음이 나중에 받게됩니다 부호 수단
(46)은 COUT << " C3 = C2 = C1 + " ; c3.display (); 47 반환 0 ; 48 }

C3 = C1 + 5 + 함수 호출을 만들고 싶어하는 것은 복잡한 코드의 실수를 (노란색은 장소가 아니다)이다 :

. 1 사용법 #include <iostream>
 2  사용하여  네임 스페이스 STD;
 3 개.  클래스 단지 {
 네.  공공 :
 . 5      단지 () {}; // 기본 생성자, 할당이 초기화되지 않습니다 
. 6      단지 ( 더블 R & LT, 더블 I) : 리얼 (R & LT) IMAG (I) {} 
 . 7      
. 8      복잡한 연산자 + ( CONST 착체 및 C2) CONST ; // + 
. 9  
(10)      복합 운전자 + ( INT A) CONST ; // 복잡한 실제
 11     
12는      단지 운영자 - ( CONST 복합 C2 및) CONST ; // - 
13이고  
14      무효 표시 () CONST ;    // 복소 출력 
15  개인 :
 16       리얼;     // 실부 복수 
17.      더블 IMAG;     // 복수의 허수 부 
(18)  };
 . (19)  
(20)이 복잡한 복합 :: 연산자 (+ CONST 복합체 C2) CONST { // 착체 + 
21은      리턴복잡한 (실제 +의 c2.real, IMAG + c2.imag);
22  }
 23  
24  복잡한 복합 :: 연산자 + ( INT a) CONST { // 复数和实数+
 25      ++ ;
26       (진짜 + 단지 A, IMAG);
27  }
 28  
29 복잡한 복합 :: 연산자 - ( CONST 복합체 C2) CONST { // 复数- 
30       착물 (리얼 - c2.real, IMAG - c2.imag);
31  }
 32  
33  공극디스플레이 :: 착체 () CONST {
 34는      COUT << " ( " << 리얼 << " , " << << IMAG " ) " << ENDL;
 35  }
 36  
37 [  INT 의 main () {
 38 인      복합체 C1 ( . 5 , . 4 ), C2 ( 2 , 10 ), C3, C3 // 기본 생성자 호출 쓰레기 데이터
 (39)      의 INT B의 = 5. ;
 40      COUT << " C1 = " ; c1.display ();
41      COUT << "= C2 " ; c2.display ();
 (42)는      C3 = C1 - C2;    // 사용 과부하 사업자 복소 감산을 수행하는 
(43)가      COUT << " C3 = C1 - C2 = " ; c3.display을 ();
 (44)가      C3 = C1 C2 +는;    // 사용 복소 가산기 완료 연산자 과부하 
45      COUT << " C3 = C2 = C1 +를 " ; c3.display을 ();
 (46)가      C3 = C1 + 5. ;
 47      COUT << " C3 = C2 = C1 + " ; c3.display ()
 48      리턴  0 ,
 49 }

나중에이 문제를 해결하지만, 나는 또한 그래서 객체가 직접 허점 과부하 운영자에 의해 계산되는 것을 발견하지만 강력하게 추천 할 숫자를 통해,하지만 직접 객체 사이의 동작 의 객체와 객체 조작하여 수행하는 것이 가능하게를 자신의 아이디어를 직접 비록 디지털을 통해 실행하지만, 생성자는 분명히 부당 (기본 생성자가 기본 매개 변수지만, 쓰레기 데이터를 제공하지 않았기 때문에, C3은 예입니다)

추천

출처www.cnblogs.com/working-in-heart/p/12131285.html