프로그램을 작성하다 보면 copy constructor와 assign operator를 자기도 모르는 사이에 사용하게 되는데,
생긴 것은 assign operator처럼 생겼지만, 실제로는 copy constructor가 실행되는 경우가 있습니다.
샘플입니다.
class Int
{
public:
// constructor
Int(const int i = 0);
Int(const Int& r) ;
// assign operator
const Int& operator = (const int i);
const Int& operator = (const Int& r);
}
void foo()
{
{
Int a(1); // default constructor
Int b(2); // default constructor
Int c(a); // copy constructor
}
{
Int a(3);
Int b;
b = 4; // assign operator
Int c;
c = a; // assign operator
}
{
Int a(5);
Int b = 6; // copy constructor( not assign operator )
Int c = a; // copy constructor( not assign operator )
}
}
http://gilgil1973.blogspot.com/2011/02/copy-constructor-and-assign-operator.html
|