P551 /21-9
class Needconstructor
{
public:
const int maxCount; //const 속성을 가진 멤버변수 선언
int& ref; //레퍼런스 타입의 멤버 변수 선언
int sample;
};
int main()
{
Needconstructor cr;
cr.maxCount = 100; //객체를 생성하자마자 바로 초기화
cr.ref =cr.sample;
return 0;
}
화면 캡처: 2010-06-16, 오전 9:37
에러 발생.
class Needconstructor
{
public:
const int maxCount; //const 속성을 가진 멤버변수 선언
int& ref; //레퍼런스 타입의 멤버 변수 선언
int sample;
NeedConstructor();
};
NeedConstructor::NeedConstructor()
{
maxCount = 100; //디폴트 생성자를 추가하고, 그 안에서
num = sample; //맴버변수를 초기화하게 만들었다.
}
int main()
{
Needconstructor cr;
return 0;
}
화면 캡처: 2010-06-16, 오전 9:43
<에러발생>
#include <iostream>
using namespace std;
class NeedConstructor
{
public:
const int maxCount; //const 속성을 가진 멤버변수 선언
int& ref; //레퍼런스 타입의 멤버 변수 선언
int sample;
NeedConstructor();
};
NeedConstructor::NeedConstructor():maxCount(100), ref(sample)
{
sample = 200;
}
int main()
{
NeedConstructor cr;
cout << "cr.maxCount =" << cr.maxCount << "\n";
cout << "cr.ref =" << cr.ref << "\n";
return 0;
}
화면 캡처: 2010-06-16, 오전 10:06
- 반드시 초기화해야 하는 멤버 변수들은 생성자의 초기화 리스트를 사용해서 초기화 해야한다.
#include <iostream>
using namespace std;
class NeedConstructor
{
public:
const int maxCount; //const 속성을 가진 멤버변수 선언
int& ref; //레퍼런스 타입의 멤버 변수 선언
int sample;
NeedConstructor();
NeedConstructor(int count, int& number);
};
NeedConstructor::NeedConstructor(int count, int& number)
: maxCount(count), ref(number)
{
sample = 200;
}
NeedConstructor::NeedConstructor():maxCount(100), ref(sample)
{
sample = 200;
}
int main()
{
int number = 400;
NeedConstructor cr(300, number);
cout << "cr.maxCount =" << cr.maxCount << "\n";
cout << "cr.ref =" << cr.ref << "\n";
return 0;
}
화면 캡처: 2010-06-16, 오전 10:14
- 생성자를 사용해서 임시객체 만들기.
생성자의 주된 일은 맴버변수의 초기화이다.
그리고 맨 처음 실행이 필요한 것은 생성자에 넣어주면 된다.
객체마다 초기화하는 변수가 다를 수 있으므로 생성자를 사용해서 값을 초기화해 주는 것
이다.
객체를 만들 때 자동으로 생성자 호출한다.
#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)
{
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";
}
void Area( const Point& pt)
{
int area = pt.x * pt.y;
cout << "(0,0)과 이루는 사각형의 면적 = " << area << "\n";
}
int main()
{
int x= 5;
int y= 7;
Point temp(x , y);
Area (temp);
return 0;
}
화면 캡처: 2010-06-16, 오전 10:30
'About 프로그래밍!!! > C++' 카테고리의 다른 글
(0) | 2010.06.16 |
---|---|
소멸자 (0) | 2010.06.16 |
문제풀이& 클래스,생성자 복습 (0) | 2010.06.16 |
복사 생성자 (0) | 2010.06.15 |
매겨변수가 있는 생성자 (0) | 2010.06.15 |