请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于析构函数

老师,在本节视频的12:19秒我发现如果把程序运行到底的话会显示5句Complex::~Complex()
我的理解是其中四句分别来自tmp,a,b,c
那么剩下的一句是来自哪里呢,是不是我们在函数Complex operator+(Complex& x)返回的时候返回了一个tmp的副本,第五句Complex::~Complex()就来自于这个副本?

另外我发现如果把Complex operator+(Complex& x)的返回类型(像重载=运算符那样)改成引用,最后输出结果就只剩四句Complex::~Complex(),不过这种写法有什么问题吗

正在回答

1回答

请之后提问将你的代码直接贴上最好。这里Complex operator+(Complex& x)传参时需要传引用,另外在实现时不要定义一个中间变量变量tmp,否则会常产生多余的complex对象。

0 回复 有任何疑惑可以回复我~
  • 提问者 tobeabee #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-02-25 11:15:43
  • 提问者 tobeabee #2
    老师我说的是指把返回值类型改为引用,也就是
    Complex& Complex::operator+(Complex& x)
    {
    
    	//方法一:需要拷贝构造
    	Complex temp;
    	temp.real = this->real + x.real;
    	temp.image = this->image + x.image;
    	return temp;
    }
    
    我发现此时函数依然可以正常运行
    
    我想问的问题是:
    这种把返回值类型改为引用的写法是否规范?
    回复 有任何疑惑可以回复我~ 2022-02-25 11:33:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信