class CTest:public CObject
{
public:
......
}
class CTest
{
public:
......
}CTest a;
CTest b;
a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,因为我的类中没有重载=操作符,而=在CObject类中是私有的。如果我不指定父类,那么=就能用,这就奇怪了,应该默认父类是是CObject啊,如果我不指定的话。
{
public:
......
}
class CTest
{
public:
......
}CTest a;
CTest b;
a=b;//这一句有问题,如果我指定了父类是CObject,那么=操作符就不能用,因为我的类中没有重载=操作符,而=在CObject类中是私有的。如果我不指定父类,那么=就能用,这就奇怪了,应该默认父类是是CObject啊,如果我不指定的话。
void operator =( const CObject& src );ResThe standard C++ default class assignment behavior is a member-by-member copy.
在MFC中,如果你的类是从CCmdTarget(或者是CCmdTarget的子类)继承,系统会自动替你加上如下所示的代码:
BEGIN_MESSAGE_MAP(CYourClass, CYourClassParent)
//{{AFX_MSG_MAP(CYourClass)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
上面这些宏都是MFC内置的!
但事实证明,只要继承了CObject,“赋值运算符(=)”就不能用了。
1、赋值运算符(=) 是可以重载的
2、赋值运算符(=)在CObject中虽然有定义,但是没有实现。c++中,如果你没有为一个类定义"="操作符,那么编译器会为你提供一个默认的,这就是你随便写一个类可以用"="操作符的原因。但是CObject中已经定义了"="操作符,只是没有实现,也就是说编译器不会为你提供默认的"="操作符了,必须要你自己实现。从CObjcet继承的子类也是这样。
class CTest 类本身是老大可以自己重载=操作符
1、赋值运算符(=) 是可以重载的
2、赋值运算符(=)在CObject中虽然有定义,但是没有实现。c++中,如果你没有为一个类定义"="操作符,那么编译器会为你提供一个默认的,这就是你随便写一个类可以用"="操作符的原因。但是CObject中已经定义了"="操作符,只是没有实现,也就是说编译器不会为你提供默认的"="操作符了,必须要你自己实现。从CObjcet继承的子类也是这样。