g++에서 연산자 overriding과 복사생성자가 함께 쓰여진 경우
글쓴이: hwiorb / 작성시간: 일, 2011/10/30 - 8:22오후
이항 연산자를 overriding해서 사용하려고 합니다. return 될때 복사생성자가 호출되어야 할 것 같은데,
왜 복사생성자가 호출이 안되고, 객체 참조가 되는지 이유를 모르겠습니다.
소스는 아래와 같습니다
어떻게 해야 될까요? 도움 부탁드립니다.
#include <iostream>
#include <string.h>
using namespace std;
class CopyCons
{
char * st;
public:
CopyCons()
{
st = NULL;
}
CopyCons(char * st);
CopyCons(CopyCons &s);
CopyCons operator + (char * st);
virtual ~CopyCons();
char * get_st()
{
return st;
}
};
CopyCons::CopyCons(char * st)
{
this->st = new char[strlen(st) + 1];
strcpy(this->st, st);
}
CopyCons::CopyCons(CopyCons &s)
{
this->st = new char[strlen(s.st) + 1];
strcpy(this->st, s.st);
}
CopyCons::~CopyCons()
{
if(st != NULL)
delete [] st;
}
CopyCons CopyCons::operator + (char * s)
{
char * buffer = new char[strlen(st) + strlen(s) + 1];
strcpy(buffer, st);
strcat(buffer, s);
CopyCons t(buffer);
delete [] buffer;
return t;
}
int main()
{
CopyCons c1("hello"), c2;
c2 = c1 + " world~!";
cout << "um? " << c2.get_st() << endl;
}Forums:


기존 소스에서 대입연산 override가 쓰고있는
기존 소스에서 대입연산 override가 쓰고있는 까닭에 이 건 아닐거라고 생각했는데,
대입 연산자까지 override를 해야지만, 제대로 된 결과를 볼수 있군요.
nil.
참고로...
www.gilgil.net
댓글 달기