CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于“赋值运算符=”一点的不明白!

楼主wly033(明)2006-12-02 15:14:55 在 VC/MFC / 基础类 提问

按书上说,自定义的类会默认产生一个“赋值运算符=”,并且“赋值运算符=”是很特殊的,不能被继承。  
   
  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

相关问题

关键词

得分解答快速导航

  • 帖主:wly033
  • lshadow
  • lurenfu
  • ToperRay
  • shl6894

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo