首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
C/C++
C++ 语言
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
运算符重载问题!请教
[已结贴,结贴人:alexmars19831026]
加为好友
发送私信
在线聊天
alexmars19831026
君泽
等级:
可用分等级:
中农
总技术分:
641
总技术分排名:
27086
揭贴率:
100.00%
发表于:
2008-08-23 20:12:26
楼主
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator+(Complex &c2);
void display();
private:
double real;
double imag;
};
Complex Complex::operator+(Complex &c2)
{
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
void Complex::display()
{
cout < <"(" < <real < <"," < <imag < <"i)" < <endl;
}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;//=号运算符为什么不需要重载就能够达到目的
cout < <"c1=";
c1.display();
cout < <"c2=";
c2.display();
cout < <"c1+c2=";
c3.display();
return 0;
}
=号运算符为什么不需要重载就能够达到赋值目的,没有想明白,望指教
问题点数:
20
回复次数:
11
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
akirya
坏[其实偶不是什么所谓的坏人]
等级:
可用分等级:
富农
总技术分:
92662
总技术分排名:
58
6
发表于:
2008-08-23 20:13:50
1
楼 得分:
3
如果没有写operator=那么编译器就会自动生成一个.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Vegertar
diao
等级:
可用分等级:
贫农
总技术分:
161
总技术分排名:
68048
发表于:
2008-08-23 20:18:58
2
楼 得分:
5
c1 + c2得到与左值同类型的临时对象.
赋值时编译器生成默认copy构造函数实现最简单的成员复制.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
vecri
等级:
可用分等级:
贫农
总技术分:
701
总技术分排名:
25373
发表于:
2008-08-23 20:23:13
3
楼 得分:
3
如果不写operator=, 编译器会默认生成一个operator=, 实行浅拷贝
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zhongyunde
等级:
可用分等级:
中农
总技术分:
59
总技术分排名:
117263
发表于:
2008-08-23 20:25:47
4
楼 得分:
2
编译器会默认生成一个operator= 什么形式呢 ??
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kong_ling
kong_ling
等级:
可用分等级:
贫农
总技术分:
478
总技术分排名:
33508
发表于:
2008-08-23 20:28:59
5
楼 得分:
3
引用 1 楼 akirya 的回复:
如果没有写operator=那么编译器就会自动生成一个.
引用 3 楼 vecri 的回复:
如果不写operator=, 编译器会默认生成一个operator=, 实行浅拷贝
呵呵
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kong_ling
kong_ling
等级:
可用分等级:
贫农
总技术分:
478
总技术分排名:
33508
发表于:
2008-08-23 20:35:08
6
楼 得分:
2
缺省的按成员赋值
应该是这种形式的吧:
C/C++ code
inline Complex
&
Complex::
operator
=
(
const
Complex
&
rhs) { real
=
rhs.real; image
=
rhs.image; }
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
Vegertar
diao
等级:
可用分等级:
贫农
总技术分:
161
总技术分排名:
68048
发表于:
2008-08-23 20:39:36
7
楼 得分:
2
嗯,我觉得我的观点还是蛮有道理的.貌似没有人支持.
就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的.当一个类没有自定义的拷贝构造函数的
时候系统会自动提供一个默认的拷贝构造函数,来完成复制工作。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kong_ling
kong_ling
等级:
可用分等级:
贫农
总技术分:
478
总技术分排名:
33508
发表于:
2008-08-23 20:49:25
8
楼 得分:
0
不是调用拷贝构造函数,是拷贝赋值函数。因为已经构造过了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wjb_yd
等级:
可用分等级:
中农
总技术分:
882
总技术分排名:
21273
发表于:
2008-08-23 21:04:03
9
楼 得分:
0
引用 1 楼 akirya 的回复:
如果没有写operator=那么编译器就会自动生成一个.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
alexmars19831026
君泽
等级:
可用分等级:
中农
总技术分:
641
总技术分排名:
27086
发表于:
2008-08-23 21:06:10
10
楼 得分:
0
谢谢大家,明白了,做了实验,散分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cyblueboy83
爱情白痴—电脑迷
等级:
可用分等级:
掌柜
总技术分:
6773
总技术分排名:
2995
发表于:
2008-08-23 22:21:54
11
楼 得分:
0
浅拷贝
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友