挽救C++程序员生命之operator=(熟悉C++标准的一定要进啊!)

yjh1982 2004-03-01 09:51:08
关于问题的起因见:
http://expert.csdn.net/Expert/topic/2777/2777264.xml?temp=8.672732E-02

我答了已后还心神不安.今天写了一个例程,果然抓狂:
#include <iostream>

class base
{
public:
virtual base&operator=(const base&right)
{
std::cout <<"in base"<<std::endl;
return *this;
}
};
class child:public base
{
public:
virtual base&operator=(const base&right)
{
std::cout <<"in child"<<std::endl;
return *this;
}};
int main(int argc, char* argv[])
{
child one;child two;
one=two;
}

看到了吧!one=two会调用base的!看来operator=的特殊还不只"只能是非静态成员函数","编译器会自动产生","不能被子类继承".有人能解释上面的原由吗?

...全文
55 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复

64,653

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧