关于析构函数

来源:8-4 运算符重载

tobeabee

2022-02-24

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

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

写回答

1回答

quickzhao

2022-02-24

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

0
2
tobeabee
老师我说的是指把返回值类型改为引用,也就是 Complex& Complex::operator+(Complex& x) { //方法一:需要拷贝构造 Complex temp; temp.real = this->real + x.real; temp.image = this->image + x.image; return temp; } 我发现此时函数依然可以正常运行 我想问的问题是: 这种把返回值类型改为引用的写法是否规范?
2022-02-25
共2条回复

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程