복사생성자 관련. 예제 코드.와 Exercise 21-2
#include <iostream>
#include <iostream>
using namespace std;
class Point
{//클래스 정의.
public:
int x, y;//멤버 변수
void print();//멤버 함수
Point();//생성자들
Point(int initialX, int initialY);
Point(const Point& pt);
//복사생성자
};
Point::Point(const Point& pt)
{
cout<<"복사생성자가 호출됨\n";
x=pt.x;
y=pt.y;
}
Point::Point(int initialX,int initialY)
{
x = initialX;
y = initialY;
}
Point::Point(){
x = 0;
y = 0;
}
void Point::print()//멤버함수를 밖에서 정의함.
{
cout << "(" << x << "," << y << ")\n";
}
int main()
{
Point pt1(100, 200), pt2(300,400);
Point pt3 = pt1;//해당값으로 초기화 //여기에서 이 문구는 Point pt3(pt1); 과 코드는 다르나 결과는 같다.
pt3.print();//출력.
pt3 = pt2;//해당값으로 대체.
pt3.print();//출력
//출력시에 복사생성자가호출됨 이라는 문구가 한 번만 뜬 것으로 초기화가 아닌 대체 시에는 복사생성자가 호출되지 않음을 알 수 있다.
system("pause");//비쥬얼 스튜디오 2008 부터는 디버깅시에 이 문구를 사용하지 않을 시에 바로 디버깅이 종료되어버림.
return 0;
}
////////////////////////////////////////////////////
Exercise 부분.
}
////////////////////////////////////////////////////
Exercise 부분.
#include <iostream>
using namespace std;
class Ball
{//클래스 정의.
public:
int _x, _y;//공의 위치
int _radius;//공의 반지름
Ball( int x, int y);//기본 생성자
Ball( const Ball& pt);//복사 생성자
void Print();//멤버 함수
Ball();//생성자들
//복사생성자
};
Ball::Ball(const Ball& pt)
{
cout<<"복사생성자가 호출됨\n";
_radius = 3;
_x=pt._x+ _radius;//반지름 만큼 x값에 더함.
_y=pt._y;
}
Ball::Ball(int initialX,int initialY)
{
_x = initialX;
_y = initialY;
}
Ball::Ball(){
_x = 0;
_y = 0;
}
void Ball::Print()//멤버함수를 밖에서 정의함.
{
cout << "(" << _x << "," << _y << ")\n";
}
int main()
{
Ball pt1(100, 200), pt2(100,200);
pt1.Print();
pt2.Print();//입력받은 값 출력
Ball pt3 = pt1;//해당값으로 초기화
pt3.Print();//복사 생성자가 호출된 이후를 출력.
pt3 = pt2;//해당값으로 대체.
pt3.Print();//복사 생성자가 호출되지 않은 상태를 출력
//출력시에 복사생성자가호출됨 이라는 문구가 한 번만 뜬 것으로 초기화가 아닌 대체 시에는 복사생성자가 호출되지 않음을 알 수 있다.
system("pause");//비쥬얼 스튜디오 2008 부터는 디버깅시에 이 문구를 사용하지 않을 시에 바로 디버깅이 종료되어버림.
return 0;
'공부 > C++' 카테고리의 다른 글
인자를 사용한 멤버 초기화 리스트 사용 (0) | 2011.11.23 |
---|---|
생성자의 초기화 리스트 사용 예제 (0) | 2011.11.23 |
뇌를 자극하는 C++ 프로그래밍 비타민 퀴즈 (0) | 2011.11.23 |
뇌를 자극하는 C++ 프로그래밍 Exercise (0) | 2011.11.23 |
돌죽 번역 관련 (0) | 2011.07.04 |