Programming/C++ STL2014. 2. 26. 10:49
클래스를 생성한뒤 값을 주거나
값을 주어 생성하는 경우 어떻게 다른가 테스트

일단.. 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)'을(를) 일치시키는 동안 

[링크 : https://kldp.org/node/31436]
[링크 : 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++ constructor  (0) 2014.02.26
C++11 Lambda Fuction  (2) 2013.11.20
C++ AMP (Accelerated Massive Parallelism)  (0) 2013.10.08
c++ class - friend  (0) 2013.03.15
Posted by 구차니

댓글을 달아 주세요