기본 생성자, 복사 생성자, 복사 대입자 그리고 암시적 형변환과 explicit
2018. 3. 17. 01:31
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <iostream> using namespace std; class gee { public: gee(){ cout << "기본 생성자" << endl << endl; } gee(int a, int b = 0){ cout << "생성자 : " << a << endl << endl; } ~gee(){ cout << "기본 소멸자" << endl; } gee(const gee& g){ cout << "복사 생성자" << endl << endl; } void operator=(const gee& g){ cout << "복사 대입자" << endl << endl; } }; int main() { // C 스타일 gee a = 0; a = 30; //oops! a = gee(30) 대입 발생 gee b = a; | cs |
C++ 스타일
explict을 통한 암시적 형변환 금지
다음과 같이 생성자에 키워드 explicit을 사용하면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | gee(){ cout << "기본 생성자" << endl << endl; } explicit gee(int a, int b = 0){ cout << "생성자 : " << a << endl << endl; } ~gee(){ cout << "기본 소멸자" << endl; } explicit gee(const gee& g){ cout << "복사 생성자" << endl << endl; } void operator=(const gee& g){ cout << "복사 대입자" << endl << endl; } | cs |
컴파일 되지 않는다. 형변환도 일어나지 않는다.
'프로그래밍 > C, C++ 공부' 카테고리의 다른 글
오늘 주의깊게 본 스택오버플로우 (0) | 2018.03.22 |
---|---|
static에 대한 공부 (0) | 2018.03.17 |
복사 생성자에서는 왜 파라메터의 private 멤버에 접근할 수 있을까 (0) | 2018.03.16 |
C++ 11 (0) | 2018.03.11 |
STL 컨테이너 선택 알고리즘 (0) | 2018.03.11 |