c++中=运算符重载后的困惑!请高手指点

fwinfwin 2003-10-09 09:59:24
自建的一个类myclass,现在从载运算符=

现在对
myclass *a,*b;
b==new myclass();
如果a=b;的时候会发生什么?是把b的指针赋给a,还是会发生对象的拷贝阿?
...全文
81 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leonhart 2003-10-09
  • 打赏
  • 举报
回复
会发生什么就看你怎么重载的了。
AdamKing 2003-10-09
  • 打赏
  • 举报
回复
先判断等号右边是不是其本身!
myclass& operator=(myclass *a,myclass *b)
{
if(a==b) return;
return b;
}
所有可自赋值的,如+=,-=等等,均应该先判断!
lixinwyh 2003-10-09
  • 打赏
  • 举报
回复
好像对等号重载仅限于赋值操作,指针的赋值好像不能重载吧。
xueweizhong 2003-10-09
  • 打赏
  • 举报
回复
关于operator = 的重载

1:不能作为非类的成员函数
2:a = b中的=如果被重载,那么a必须是一个自定义类型
(class, union, enum)
3: 在你的情况中 a的类型是 myclass*, 不是自定义类型,
所以=操作的语义是编译器规定的。
rtdb 2003-10-09
  • 打赏
  • 举报
回复
哇,真的么?
请 micropentium6(小笨) 给个例程,

myclass *a,*b;
b=new myclass();
a=b;
可以调用重载运算符=
  • 打赏
  • 举报
回复
我觉得这取决于你如何重载的operator=
rtdb 2003-10-09
  • 打赏
  • 举报
回复
myclass a,b;
a=b; 对象的拷贝
rtdb 2003-10-09
  • 打赏
  • 举报
回复
myclass *a,*b;
a=b 把b的指针赋给a

不会有对象的拷贝
fwinfwin 2003-10-09
  • 打赏
  • 举报
回复
越说我越胡涂了阿,先给分再说,
先以rtdb(东临碣石) 和xueweizhong(薛卫忠)说的作为我的答案吧,
反正我先不重载了,用函数copyto()来拷贝算了!

64,639

社区成员

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

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