64,282
社区成员
发帖
与我相关
我的任务
分享
class CTest0
{
public:
CTest0()
{
p = new int[10]();
}
virtual ~CTest0()
{
delete []p;
}
CTest0* operator = (const CTest0* tem)
{
printf("CTest0* operator =\n");
if (this == tem) return this;
memcpy(this->p, tem->p, 40);
return this;
}
CTest0& operator = (const CTest0 &tem)
{
printf("CTest0& operator =\n");
if (this == &tem) return *this;
memcpy(this->p, tem.p, 40);
return *this;
}
public:
int *p;
};
int _tmain(int argc, _TCHAR* argv[])
{
{
CTest0 *T0_0 = new CTest0();
CTest0 *T0_1 = new CTest0();
T0_0 = T0_1; //并没有正确赋值
printf("\n");
}
{
CTest0 *T0_0 = new CTest0();
CTest0 *T0_1 = new CTest0();
T0_0->operator=(T0_1); //输出CTest0* operator = 正确赋值
printf("\n");
}
return 0;
}
CTest0(const CTest0& tem)
{
printf("CTest0&\n");
p = new int[10]();
if (this == &tem) return;
memcpy(this->p, tem.p, 40);
}
class CTest0
{
public:
CTest0()
{
p = new int[10]();
}
virtual ~CTest0()
{
delete []p;
}
CTest0(const CTest0* tem)
{
printf("CTest0*\n");
if (this == tem) return;
p = new int[10]();
memcpy(this->p, tem->p, 40);
}
public:
int *p;
};
int _tmain(int argc, _TCHAR* argv[])
{
{
CTest0 T0_0;
CTest0 T0_1(T0_0); //输出CTest0& 正确赋值
printf("\n");
}
{
CTest0 T0_0;
CTest0* T0_1(&T0_0); //没有正确赋值
printf("\n");
}
}
上述第二个也没有正确赋值,为什么?