© 2010 인피니티북스 All rights reserved 제 7 장 클래스의 활용 C++ Espresso.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
제 9 장 포인터.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
제 9 장 구조체와 공용체.
C++ Exspresso 제5장 클래스의 기초.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
개정판 누구나 즐기는 C언어 콘서트 제9장 포인터 출처: pixabay.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
C++ Espresso 제6장 생성자와 소멸자.
C++ Espresso 제7장 클래스의 활용.
5장. 참조 타입.
제 3장. C보다 나은 C++ II.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
C++ Espresso 제12장 템플릿.
제4장 클래스와 객체 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
제7장 클래스와 객체.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
14장. 포인터와 함수에 대한 이해.
14. 예외처리.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
자바 5.0 프로그래밍.
11장. 1차원 배열.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
C#.
13. 연산자 오버로딩.
제14장 예외처리와 템플릿 예외 처리의 개요를 학습한다. 예외 처리를 적용할 수 있다. 템플릿의 개념을 이해한다.
7장 인터페이스와 추상 클래스.
어서와 C언어는 처음이지 제14장.
제5장 생성자와 접근제어 객체 지향 기법을 이해한다. 클래스를 작성할 수 있다. 클래스에서 객체를 생성할 수 있다.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
명품 C++ 9장 가상 함수와 추상 클래스.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express Slide 1 (of 22)
C++ Espresso 제8장 객체 지향 소개.
19. 함수 포인터와 void 포인터.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Power Java 제11장 상속.
Chapter 08. 함수.
C++ Espresso 제11장 예외 처리와 형변환.
멤버함수 중첩( 복사 생성자 ) - 연사자 중첩 - 동적 메모리를 가지는 클래스를 지원 하도록 멤버 함수 작성
JA A V W. 06.
12. 상속 : 고급.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
Summary of Pointers and Arrays
Static과 const 선언 조 병 규 한 국 교 통 대 학 교 SQ Lab..
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
윤성우의 열혈 C++ 프로그래밍 윤성우 저 열혈강의 C++ 프로그래밍 개정판 Chapter 05. 복사 생성자.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
13. 포인터와 배열! 함께 이해하기.
7 생성자 함수.
Presentation transcript:

© 2010 인피니티북스 All rights reserved 제 7 장 클래스의 활용 C++ Espresso

© 2010 인피니티북스 All rights reserved 이번 장에서 학습할 내용 객체의 동적 생성 this const 객체와 연산자 객체와 함수 정적 멤버 객체의 배열 객체와 클래스의 활용에 필요한 사항들을 살펴봅니다.

© 2010 인피니티북스 All rights reserved 객체의 동적 생성  객체도 동적으로 생성할 수 있다.  Car myCar;// 정적 메모리 할당으로 객체 생성  Car *pCar = new Car();// 동적 메모리 할당으로 객체 생성

© 2010 인피니티북스 All rights reserved 객체 포인터를 통한 멤버 접근  pCar->speed = 100;  pCar->speedUp();

© 2010 인피니티북스 All rights reserved 예제 #include using namespace std; class Car { int speed; int gear; string color; public: Car(int s=0, int g=1, string c="white") : speed(s), gear(g), color(c) { } void print() { cout << " 속도 : " << speed << " 기어 : " << gear << " 색상 : " << color << endl; } };

© 2010 인피니티북스 All rights reserved 예제 int main() { Car myCar; myCar.print(); pCar = new Car(0, 1, "blue"); pCar->print(); return 0; } 속도 : 0 기어 : 1 색상 : white 속도 : 0 기어 : 1 색상 : blue 객체 동적 생성

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. 클래스로부터 객체를 생성할 수 있는 방법을 열거하여 보라. 2. 객체 포인터로는 반드시 동적 생성된 객체만을 가리켜야 하는가 ?

© 2010 인피니티북스 All rights reserved this 포인터  this 는 현재 코드를 실행하는 객체를 가리키는 포인터

© 2010 인피니티북스 All rights reserved this 를 사용하는 예 void Car::setSpeed(int speed) { if( speed > 0 ) this->speed = speed; // speed 는 매개 변수, this->speed 는 멤버 변수 else this->speed = 0; } // 생성자 Car::Car(int s) { this->setSpeed(s);// this 는 없어도 된다. 멤버 함수임을 강조 this->gear = 1; this->color = "white"; }

© 2010 인피니티북스 All rights reserved 예제 #include using namespace std; class Car { int speed; // 속도 int gear; // 기어 string color; // 색상 public: Car(int s=0, int g=1, string c="white") : speed(s), gear(g), color(c) { } int getSpeed() { return speed; }

© 2010 인피니티북스 All rights reserved 예제 void setSpeed(int speed) { if( speed > 0 ) this->speed = speed; else this->speed = 0; } void print() { cout << " 속도 : " << speed << " 기어 : " << gear << " 색상 : " << color; } void isFaster(Car *p) { if( this->getSpeed() > p->getSpeed() ) this->print(); else p->print(); cout << " 의 자동차가 더 빠름 " << endl; } };

© 2010 인피니티북스 All rights reserved 예제 int main() { Car c1(0, 1, "blue"); Car c2(100, 3, "red"); c1.isFaster(&c2); return 0; } 속도 : 100 기어 : 3 색상 : red 의 자동차가 더 빠름

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. this 포인터는 무엇을 가리키는가 ? 2. this 포인터가 꼭 필요한 경우는 ?

© 2010 인피니티북스 All rights reserved const 수식어  멤버 변수에 const 를 붙이는 경우 class Car { const int serial; string color;... public: Car(int s, string c) : serial(s) { color = c; } 이 멤버 변수의 값을 변경할 수 없다.

© 2010 인피니티북스 All rights reserved const 수식어  멤버 함수에 const 를 붙이는 경우 void displayInfo() const { cout << " 속도 : " << speed << endl; cout << " 기어 : " << gear << endl; cout << " 색상 : " << color << endl; } 이 함수 안에서는 멤버 변수의 값을 변경할 수 없다.

© 2010 인피니티북스 All rights reserved const 수식어  객체에 const 를 붙이는 경우 int main() { const Car c1(0, 1, "yellow"); c1.setSpeed();// 오류 ! return 0; } 이 객체를 통해서는 멤버 변수의 값을 변경할 수 없다.

© 2010 인피니티북스 All rights reserved const 수식어  함수에 const 가 붙어 있으면 중복이 가능 class Car {... void printInfo() const { cout << " 속도 : " << speed << endl; cout << " 기어 : " << gear << endl; cout << " 색상 : " << color << endl; } void printInfo() { cout << " " << endl; cout << " 속도 : " << speed << endl; cout << " 기어 : " << gear << endl; cout << " 색상 : " << color << endl; cout << " " << endl; }

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. 객체 선언시에 const 가 붙으면 어떤 의미인가 ? 2. 멤버 변수 getSpeed() 에 const 를 붙여보라. 어떤 의미인가 ?

© 2010 인피니티북스 All rights reserved  객체에 할당 연산자 (=) 를 사용할 수 있는가 ? class Car {... // 생략 }; int main() { Car c1(0, 1, "white"); Car c2(0, 1, "red"); c1 = c2; // 어떻게되는가 ? return 0; } 객체와 연산자 c2 객체가 가지고 있는 변수의 값이 c1 으로 복사된다..

© 2010 인피니티북스 All rights reserved  객체에 할당 연산자 (=) 를 사용할 수 있는가 ? int main() { Car c1(0, 1, "white"); Car c2(0, 1, "red"); if( c1 == c2 ){ cout << " 같습니다 " << endl; } else { cout << " 같지않습니다 " << endl; } return 0; } 객체와 연산자 연산자 중복이 되어 있지 않으면 오류 !

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. = 연산자를 이용하여서 하나의 객체를 다른 객체에 할당할 수 있는가 ? 2. == 연산자를 이용하여서 하나의 객체와 다른 객체를 비교할 수 있는 가 ?

© 2010 인피니티북스 All rights reserved 객체와 함수 ① 객체가 함수의 매개 변수로 전달되는 경우 ② 함수가 객체를 반환하는 경우 ③ 객체의 포인터가 함수의 매개 변수로 전달되는 경우 ④ 객체의 레퍼런스가 함수의 매개 변수로 전달되는 경우

© 2010 인피니티북스 All rights reserved 객체가 함수의 매개 변수로 전달

© 2010 인피니티북스 All rights reserved 객체가 함수의 매개 변수로 전달 #include using namespace std; class Car { int speed; int gear; string color; public: Car(int s=0, int g=1, string c="white") : speed(s), gear(g), color(c) { } void print() { cout << " 속도 : " << speed << " 기어 : " << gear << " 색상 : " << color << endl; } };

© 2010 인피니티북스 All rights reserved 객체가 함수의 매개 변수로 전달 void swapObjects(Car c1, Car c2) { Car tmp; tmp = c1;c1 = c2; c2 = tmp; } int main() { Car red(0, 1, "red"); Car blue(30, 2, "blue"); swapObjects(red, blue); red.print(); blue.print(); return 0; } 속도 : 0 기어 : 1 색상 : red 속도 : 30 기어 : 2 색상 : blue

© 2010 인피니티북스 All rights reserved 함수가 객체를 반환...// 전과동일 Car createCar() { Car tmp(0, 1, "metal"); return tmp; } int main() { Car c; c.print(); c = createCar(); c.print(); return 0; } 속도 : 0 기어 : 1 색상 : white 속도 : 0 기어 : 1 색상 : metal

© 2010 인피니티북스 All rights reserved 객체의 포인터가 함수에 전달

© 2010 인피니티북스 All rights reserved 객체의 포인터가 함수에 전달...// 전과동일 void swapObjects(Car *p1, Car *p2) { Car tmp; tmp = *p1; *p1 = *p2; *p2 = tmp; } int main() { Car red(0, 1, "red"); Car blue(0, 1, "blue"); swapObjects(&red, &blue); red.print(); blue.print(); return 0; } 속도 : 0 기어 : 1 색상 : blue 속도 : 0 기어 : 1 색상 : red

© 2010 인피니티북스 All rights reserved 객체의 참조자가 함수에 전달

© 2010 인피니티북스 All rights reserved 객체의 포인터가 함수에 전달...// 전과동일 void swapObjects(Car &r1, Car &r2) { Car tmp; tmp = r1; r1 = r2; r2 = tmp; } int main() { Car red(0, 1, "red"); Car blue(30, 2, "blue"); swapObjects(red, blue); red.print(); blue.print(); return 0; } 속도 : 0 기어 : 1 색상 : blue 속도 : 0 기어 : 1 색상 : red 계속하려면 아무 키나 누르십시오...

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. 함수 안에서 매개 변수로 전달받은 객체의 내용을 수정하려면 매개 변수를 어떤 타입으로 선언하여야 하는가 ? 2. 매개 변수로 포인터와 레퍼런스를 사용하는 경우를 비교하여 보자.

© 2010 인피니티북스 All rights reserved 임시 객체  수식의 계산 도중에 중간 결과를 저장하기 위하여 임시적으로 만들 어지는 객체

© 2010 인피니티북스 All rights reserved 임시 객체  함수가 객체를 반환하는 경우에도 생성

© 2010 인피니티북스 All rights reserved 정적 멤버  인스턴스 변수 (instance variable): 객체마다 하나씩 있는 변수  정적 변수 (static variable): 모든 객체를 통틀어서 하나만 있는 변수

© 2010 인피니티북스 All rights reserved 정적 멤버 변수 #include using namespace std; class Car { int speed; int gear; string color; public: static int count; Car(int s=0, int g=1, string c="white"): speed(s), gear(g), color(c) { count++; } ~Car() { count--; } }; 정적 변수의 선언

© 2010 인피니티북스 All rights reserved 정적 멤버 변수 int Car::count = 0;// ① int main() { cout <<" 지금까지 생성된 자동차수 = " << Car::count << endl; // ② Car c1(100, 0, "blue"); Car c2(0, 0, "white"); cout <<" 지금까지 생성된 자동차수 = " << Car::count << endl; // Car c3(0, 0, "red"); cout <<" 지금까지 생성된 자동차수 = " << c1.count << endl; // cout <<" 지금까지 생성된 자동차수 = " << c2.count << endl; // return 0; } 지금까지 생성된 자동차 수 = 0 지금까지 생성된 자동차 수 = 2 지금까지 생성된 자동차 수 = 3 정적 변수의 정의

© 2010 인피니티북스 All rights reserved 정적 멤버 함수  정적 멤버 함수는 static 수식자를 멤버 함수 선언에 붙인다.  클래스 이름을 통하여 호출  정적 멤버 함수도 클래스의 모든 객체들이 공유

© 2010 인피니티북스 All rights reserved 정적 멤버 함수 class Car {... public: static int count;// 정적변수의 선언... // 정적 멤버 함수 static int getCount() { return count; } }; int Car::count=0;// 정적 변수의 정의 int main() { Car c1(100, 0, "blue"); Car c2(0, 0, "white"); int n = Car::getCount(); cout <<" 지금까지 생성된 자동차수 = " << n << endl; return 0; }

© 2010 인피니티북스 All rights reserved 정적 멤버 함수 지금까지 생성된 자동차 수 = 2 계속하려면 아무 키나 누르십시오...

© 2010 인피니티북스 All rights reserved 주의할 점  정적 멤버 함수에서 멤버 변수들은 사용할 수 없다.  정적 멤버 함수에서 일반 멤버 함수를 호출하면 역시 오류

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. 정적 변수는 어떤 경우에 사용하면 좋은가 ? 2. 정적 변수나 정적 멤버 함수를 사용할 때, 클래스 이름을 통하여 접근 하는 이유는 무엇인가 ? 3. 정적 멤버 함수 안에서 일반 멤버 함수를 호출할 수 없는 이유는 무엇 인가 ?

© 2010 인피니티북스 All rights reserved 객체들의 배열  객체 들의 배열  예 : Car objArray[3]; objArray[0].speed = 0;// 멤버 변수 접근 objArray[1].speedUp();// 멤버 함수 호출

© 2010 인피니티북스 All rights reserved 객체 배열의 초기화 Car objArray[3] = { Car(0, 1, "white"), Car(0, 1, "red"), Car(0, 1, "blue"), }; 객체 별로 생성자를 호출할 수 있다.

© 2010 인피니티북스 All rights reserved 예제 #include using namespace std; class Car { int speed; int gear; string color; public: Car(int s=0, int g=1, string c="white"): speed(s), gear(g), color(c) { } void print() { cout << " 속도 : " << speed << " 기어 : " << gear << " 색상 : " << color << endl; } };

© 2010 인피니티북스 All rights reserved 예제 int main() { Car objArray[3] = { Car(0, 1, "white"), Car(0, 1, "red"), Car(0, 1, "blue"), }; for(int i=0; i< 3; i++) objArray[i].print(); return 0; } 속도 : 0 기어 : 1 색상 : white 속도 : 0 기어 : 1 색상 : red 속도 : 0 기어 : 1 색상 : blue 계속하려면 아무 키나 누르십시오...

© 2010 인피니티북스 All rights reserved 객체 배열과 포인터  객체 배열의 이름은 포인터처럼 사용될 수 있다.

© 2010 인피니티북스 All rights reserved 예제 int main() { Car objArray[3] = { Car(0, 1, "white"), Car(0, 1, "red"), Car(0, 1, "blue"), }; for(int i=0; i< 3; i++) (objArray+i)->print(); Car *p = objArray; for(int i=0; i< 3; i++){ p->print(); p++; } return 0; } 속도 : 0 기어 : 1 색상 : white 속도 : 0 기어 : 1 색상 : red 속도 : 0 기어 : 1 색상 : blue 속도 : 0 기어 : 1 색상 : white 속도 : 0 기어 : 1 색상 : red 속도 : 0 기어 : 1 색상 : blue

© 2010 인피니티북스 All rights reserved 클래스와 클래스 간의 관계  사용 (use): 하나의 클래스가 다른 클래스를 사용한다.  포함 (has-a): 하나의 클래스가 다른 클래스를 포함한다.  상속 (is-a): 하나의 클래스가 다른 클래스를 상속한다.

© 2010 인피니티북스 All rights reserved 사용 관계  클래스 A 의 멤버 함수에서 클래스 B 의 멤버 함수들을 호출 ClassA::func() { ClassB obj;// 사용 관계 obj.func();... }

© 2010 인피니티북스 All rights reserved 포함 관계  하나의 객체 안에 다른 객체들이 포함

© 2010 인피니티북스 All rights reserved 포함 관계 #include using namespace std; // 시각을나타내는클래스 class Time { private: int time;// 시간 int minute;// 분 int second;// 초 public: Time();// 디폴트생성자 Time(int t, int m, int s);// 생성자 void print();// 객체의정보출력 }; Time::Time() {// 디폴트생성자 time = 0; minute = 0; second = 0; }

© 2010 인피니티북스 All rights reserved 포함 관계 Time::Time(int t, int m, int s) {// 생성자 time = t; minute = m; second = s; } void Time::print()// 객체의정보를출력 { cout << time << " 시 " << minute << " 분 " << second << " 초 \n"; } // 알람시계를나타낸다. class AlarmClock { private: Time currentTime;// 현재시각 Time alarmTime;// 알람시각 public: AlarmClock(Time a, Time c);// 생성자 void print();// 객체의정보출력 }; AlarmClock::AlarmClock(Time a, Time c) {// 생성자 alarmTime = a;// 객체가복사된다. currentTime = c;// 객체가복사된다. }

© 2010 인피니티북스 All rights reserved 예제 void AlarmClock::print() { cout << " 현재시각 : "; currentTime.print(); cout << " 알람시각 : "; alarmTime.print(); } int main() { Time alarm(6, 0, 0); Time current(12, 56, 34); AlarmClock c(alarm, current); c.print(); return 0; } 현재 시각 : 12 시 56 분 34 초 알람 시각 : 6 시 0 분 0 초

© 2010 인피니티북스 All rights reserved 중간 점검 문제 1. 사용 관계와 포함 관계는 어떻게 다른가 ? 2. 사용 관계와 포함 관계의 예를 더 들어보자.

© 2010 인피니티북스 All rights reserved 예제 #1 객체 포인터  만약 한 학생이 실험실의 실장과 총무를 겸하는 경우, 객체 포인터를 사용하여서 중복을 줄인다.

© 2010 인피니티북스 All rights reserved 예제 #include using namespace std; // 학생을나타낸다. class Student { private: string name; string telephone; public: Student(const string n="", const string t=""); string getTelephone() const; void setTelephone(const string t); string getName() const; void setName(const string n); }; Student::Student(const string n, const string t) { name = n; telephone = t; }

© 2010 인피니티북스 All rights reserved 객체 포인터 string Student::getTelephone() const { return telephone; } void Student::setTelephone(const string t) { telephone = t; } string Student::getName() const { return name; } void Student::setName(const string n) { name = n; }

© 2010 인피니티북스 All rights reserved 객체 포인터 // 연구실을나타낸다. class Lab { string name; Student *chief; Student *manager; public: Lab(string n=""); void setChief(Student *p); void setManager(Student *p); void print() const; }; Lab::Lab(const string n) { name = n; chief = NULL; manager = NULL; } void Lab::setChief(Student *p) { chief = p; }

© 2010 인피니티북스 All rights reserved 객체 포인터 void Lab::setManager(Student *p) { manager = p; } void Lab::print() const { cout << name << " 연구실 " << endl; if( chief != NULL ) cout getName() << endl; else cout << " 실장은현재없습니다 \n"; if( manager != NULL ) cout getName() << endl; else cout << " 총무는현재없습니다 \n"; }

© 2010 인피니티북스 All rights reserved 객체 포인터 int main() { Lab lab(" 영상처리 "); Student *p= new Student(" 김철수 ", " "); lab.setChief(p); lab.setManager(p); lab.print(); delete p; return 0; } 영상 처리연구실 실장은 김철수 총무는 김철수

© 2010 인피니티북스 All rights reserved 예제 #2 복소수

© 2010 인피니티북스 All rights reserved 복소수 #include using namespace std; class Complex { private: double real;// 실수부 double imag;// 허수부 public: Complex();// 생성자 Complex(double a, double b); // 생성자 ~Complex();// 소멸자 double getReal();// 실수부를반환한다. double getImag();// 허수부를반환한다. Complex add(const Complex& c);// 복소수의덧셈연산을구현한다. void print();// 복소수를출력한다. };

© 2010 인피니티북스 All rights reserved 복소수 Complex::Complex() { real = 0; imag = 0; } Complex::Complex(double a, double b) { real = a; imag = b; } Complex::~Complex() { } double Complex::getReal() { return(real); }

© 2010 인피니티북스 All rights reserved 복소수 double Complex::getImag() { return(imag); } // 복소수의덧셈연산구현 Complex Complex::add(const Complex& c) { Complex temp;// 임시객체 temp.real = this->real + c.real; temp.imag = this->imag + c.imag; return(temp);// 객체를반환한다. } void Complex::print() { cout << real << " + " << imag << "i" << endl; }

© 2010 인피니티북스 All rights reserved 복소수 int main(void) { Complex x(2, 3), y(4, 6), z; cout << " 첫번째 복소수 x: "; x.print(); cout << " 두번째 복소수 y: "; y.print(); z = x.add(y);// z = x + y cout << " z = x + y = "; z.print(); return(0); } 첫번째 복소수 x: 2 + 3i 두번째 복소수 y: 4 + 6i z = x + y = 6 + 9i

© 2010 인피니티북스 All rights reserved Q & A