C++拷贝构造函数的一点问题

qq_41982796 2018-04-11 04:39:12
#include<iostream>
using namespace std;
class Complex{
double real,image;
public:
Complex(double r=0.0,double i=0.0)//构造函数
{
real=r;image=i;cout<<"a"<<real<<endl;}
Complex(Complex &c)//拷贝构造函数
{
real=c.real;image=c.image;cout<<"B"<<real<<endl;}
Complex add(Complex c)
{
real+=c.real; image+=c.image;
cout<<"add"<<real<<endl;
return *this;}
};
void main(){
Complex a,b(1.2),c(2.3,5.5);
Complex a1(c),a2=b;
a=b.add(c).add(a2);
}

这是源代码有用的一部分,主函数代码的最后一行的输出结果不是很理解,想请教一下,以该代码为例,当函数返回this指针的话,理论上可以无限a.f().f().f()......那么运行时又是怎么个调用流程?
其中空间分配的规则是什么?
...全文
601 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2018-04-12
  • 打赏
  • 举报
回复
《C++编程思想》
真相重于对错 2018-04-11
  • 打赏
  • 举报
回复
引用 1 楼 Saleayas 的回复:
Complex add(Complex c) 这种标准的写法是 Complex &operator+(Complex const &c);
class A{ char* str; public: A& operator+(Complex const & rhs);//如果这里返回引用? } 如果是 A a1,a2,a3,a4, a5; a5=a1+a2+a3+4;
真相重于对错 2018-04-11
  • 打赏
  • 举报
回复
不是返回this指针而是返回this指向的值
真相重于对错 2018-04-11
  • 打赏
  • 举报
回复
而且这个代码有很大问题
Saleayas 2018-04-11
  • 打赏
  • 举报
回复
Complex add(Complex c) 这种标准的写法是 Complex &operator+(Complex const &c);

64,650

社区成员

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

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