1. 컨스트럭터가 하나라도 생성(오버로드) 되면 기본 생성자가 사용불능이 되기 때문에
필요한 생성자들을 모두 만들어 주어야 한다.
class abc {
public:
int a;
abc(int);
// abc();
};
abc::abc(int val)
{
a = val;
} |
이러한 문제를 해결하기 위해서는 인자를 가지지 않는 생성자를 만들어야 한다.
class abc
{
public:
int a;
abc(int);
abc();
};
abc::abc(int val)
{
a = val;
}
abc::abc()
{
a = 0;
} |
2. 당연한(?) 것이지만 클래스 이름과 동일한 변수는 만들수 없다.
클래스 이름과 동일한 식별자는 '생성자'로 할당되기 때문
class abc {
public:
int abc;
}; |
3. 상속의 경우 상속된 내용에 대해서는 컨스트럭터가 적용된다.
class abc
{
public:
int a;
abc(int);
abc();
~abc();
};
abc::abc(int val) {a = val;}
abc::abc() {a = 2;}
abc::~abc() {cout << "die\n";}
class bbc : public abc
{
public:
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
abc a;
bbc b;
a.a = 1;
b.b = 2;
cout << b.a << "\n";
b.a = 3;
cout << b.a << "\n";
return 0;
} |
결과는
2
3
die
die 'Programming > C++ STL' 카테고리의 다른 글
C++ AMP (Accelerated Massive Parallelism) (0) | 2013.10.08 |
---|---|
c++ class - friend (0) | 2013.03.15 |
visual studio express에서의 상속 클래스 (0) | 2013.03.13 |
다중상속의 문제점 (0) | 2013.03.11 |
상속시 public, private 키워드는 하나씩만 적용된다 (0) | 2013.03.11 |