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

小问题:C++ 重载赋值操作符的两种方式?

楼主SanTa()2005-07-02 22:42:11 在 C/C++ / C++ 语言 提问

在使用C++时发现有二种赋值操作符的重载方式,还是看代码吧。  
  方式1:  
  void   CStudent::operator=   (   CStudent&   student   )  
  {  
          m_strID     =   student.m_strID;  
          m_strPWD   =   student.m_strPWD;  
  }  
  方式2:  
  const   CStudent&   CStudent::operator=   (   const   CStudent   &student   )  
  {  
          m_strID     =   student.m_strID;  
          m_strPWD   =   student.m_strPWD;  
          return   *this;  
  }  
   
  上面这二种方法都可以达到赋值的目的。  
  我想知道这两种方法有何不同?哪种方法更规范? 问题点数:50、回复次数:5Top

1 楼foochow(无聊,灌水......)回复于 2005-07-02 22:46:17 得分 5

都一样,只是第2个可以实现连续赋值:-)Top

2 楼newbiestar()回复于 2005-07-02 22:59:51 得分 5

第一个不符合语义,因为从C开始=操作符就返回赋值以后的值,而且C++也是这样,std里面的各个成员也是这样的  
   
  另外,重载成返回const   TYPE&的函数没有必要,天生返回的是*this的话,这个必然是要被修改的……Top

3 楼maplewasp(浪影)回复于 2005-07-02 23:10:41 得分 30

同意newbiestar的说法!Top

4 楼fangrk(加把油,伙计!)回复于 2005-07-02 23:19:51 得分 10

CStudent&   CStudent::operator=   (   const   CStudent   &student   )  
  {  
          m_strID     =   student.m_strID;  
          m_strPWD   =   student.m_strPWD;  
          return   *this;  
  }  
  你的第二种方法,返回类型不必是constTop

5 楼SanTa()回复于 2005-07-03 01:12:39 得分 0

非常感谢大家的回复!Top

相关问题

  • 操作符重载
  • 操作符重载
  • 操作符重载
  • C/C++编程,关于操作符重载问题~~~~~~???
  • C++专家请进,操作符重载问题
  • C++模板类(template <class T> class myclass)中操作符重载问题
  • [求助] c++关于操作符重载的问题
  • 关于操作符重载。
  • 有关操作符重载
  • 怎样重载 = 操作符?

关键词

  • c++
  • 赋值
  • 操作符
  • cstudent
  • strpwd
  • strid
  • student
  • 返回
  • 方式
  • 方法

得分解答快速导航

  • 帖主:SanTa
  • foochow
  • newbiestar
  • maplewasp
  • fangrk

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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