关于“赋值运算符=”一点的不明白!
按书上说,自定义的类会默认产生一个“赋值运算符=”,并且“赋值运算符=”是很特殊的,不能被继承。
class CTest:public CObject
{
public:
......
}
或
class CTest
{
public:
......
}
CTest a;
CTest b;
a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,不指定就行。
问题点数:100、回复次数:4Top
1 楼lshadow(没车没房努力中。。。)回复于 2006-12-02 15:17:03 得分 50
楼主存在两个认识上的错误!
1、赋值运算符(=) 是可以重载的
2、赋值运算符(=)在CObject中虽然有定义,但是没有实现。
c++中,如果你没有为一个类定义"="操作符,那么编译器会为你提供一个默认的,这就是你随便写一个类可以用"="操作符的原因。但是CObject中已经定义了"="操作符,只是没有实现,也就是说编译器不会为你提供默认的"="操作符了,必须要你自己实现。从CObjcet继承的子类也是这样。
Top
2 楼lurenfu(具有中国特色的社会主义初级阶段,一百年不变)回复于 2006-12-02 15:42:30 得分 10
楼上正解Top
3 楼ToperRay(绿皮狼)回复于 2006-12-02 15:47:00 得分 10
赋值语句和拷贝构造函数有关,记得是这样Top
4 楼shl6894(越学越无知)回复于 2006-12-02 16:11:54 得分 30
a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,不指定就行。
=================================================================================
yinwei因为你需要重载CObject的=操作Top




