按书上说,自定义的类会默认产生一个“赋值运算符=”,并且“赋值运算符=”是很特殊的,不能被继承。class CTest:public CObject
{
public:
......
}

class CTest
{
public:
......
}CTest a;
CTest b;
a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,不指定就行。

解决方案 »

  1.   

    楼主存在两个认识上的错误!
    1、赋值运算符(=) 是可以重载的
    2、赋值运算符(=)在CObject中虽然有定义,但是没有实现。c++中,如果你没有为一个类定义"="操作符,那么编译器会为你提供一个默认的,这就是你随便写一个类可以用"="操作符的原因。但是CObject中已经定义了"="操作符,只是没有实现,也就是说编译器不会为你提供默认的"="操作符了,必须要你自己实现。从CObjcet继承的子类也是这样。
      

  2.   

    a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,不指定就行。
    =================================================================================
    yinwei因为你需要重载CObject的=操作