클래스를 생성한뒤 값을 주거나
값을 주어 생성하는 경우 어떻게 다른가 테스트
일단.. operator= 와 같이
할당연산자가 기본으로 생성되어 그런건지 모르겠지만
클래스를 만들고 나서 값을 할당하는 경우와는 또 다르게 움직인다.
그리고 생성자가 마치 할당연산자 같이 작동하는 신기한 현상을 발견...
아아 c++ 어려워 ㅠㅠ
생성자를 주석처리하여 실험해보면
operator= 일수도 있다고 연결되는 걸 봐서는... 쩝...
[링크 : https://kldp.org/node/31436]
[링크 : http://skmagic.tistory.com/entry/복사생성자와-대입연산자의-차이]
[링크 : http://msdn.microsoft.com/ko-kr/library/c5at8eya.aspx ]
값을 주어 생성하는 경우 어떻게 다른가 테스트
일단.. operator= 와 같이
할당연산자가 기본으로 생성되어 그런건지 모르겠지만
클래스를 만들고 나서 값을 할당하는 경우와는 또 다르게 움직인다.
그리고 생성자가 마치 할당연산자 같이 작동하는 신기한 현상을 발견...
아아 c++ 어려워 ㅠㅠ
#include < iostream > using namespace std; class test { int a1, a2; int a; public: test() { } test(int b) { cout << "constructor called" << endl; a = b; } void dump() { cout << a1 << ' ' << a2 << ' ' << a << endl; } }; void main() { cout << "tt" << endl; test tt; cout << "t2(11)" << endl; test t2(11); cout << "tt = 11" << endl; tt = 11; cout << "tt = 55" << endl; tt = 55; tt.dump(); t2.dump(); }
tt
t2(11)
constructor called
tt = 11
constructor called
tt = 55
constructor called
-858993460 -858993460 55
-858993460 -858993460 11 |
생성자를 주석처리하여 실험해보면
operator= 일수도 있다고 연결되는 걸 봐서는... 쩝...
1>error C2679: 이항 '=' : 오른쪽 피연산자로 'int' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.
1> 'test &test::operator =(const test &)'일 수 있습니다.
1> 인수 목록 '(test, int)'을(를) 일치시키는 동안 |
[링크 : http://skmagic.tistory.com/entry/복사생성자와-대입연산자의-차이]
[링크 : http://msdn.microsoft.com/ko-kr/library/c5at8eya.aspx ]
'Programming > C++ STL' 카테고리의 다른 글
deep copy / shallow copy < object copy (0) | 2014.02.27 |
---|---|
crt0.o / crtexe.obj (0) | 2014.02.27 |
C++11 Lambda Fuction (2) | 2013.11.20 |
C++ AMP (Accelerated Massive Parallelism) (0) | 2013.10.08 |
c++ class - friend (0) | 2013.03.15 |