永发信息网

C++类成员函数返回一个该类新的对象,该类不是基本类型,所以在函数中构建一个对象返回就是返回临时变量!

答案:4  悬赏:40  手机版
解决时间 2021-04-05 20:28
  • 提问者网友:像風在裏
  • 2021-04-04 19:50
肯定不能使用,怎么解决?

例如下面程序,编译就是痛不过
#include
using namespace std;
class Matrix
{
public:
Matrix(){};
Matrix(char* val, int n){};
Matrix(Matrix& matrix){};
~Matrix(){};
Matrix getChild(int l, int c)
{
Matrix mat;
return mat;
}
Matrix operator=(Matrix matrix){return *this;};
public:
char* value;
};
int main()
{
Matrix matrix;
Matrix mat;
mat = matrix.getChild(1,2);
}
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-04-04 20:22
肯定可以使用!
什么情况下不能使用?除非你返回的是临时变量的地址,这样函数结束临时变量被销毁,拿着它的地址用肯定会出问题。
直接返回临时变量,相当于按值传递,返回值只起到把值复制到外部变量的作用,复制完成后,临时变量虽然被销毁了,但你用的外部变量已经有了临时变量的值,而且和临时变量无关。
这和是不是基本类型没有关系
全部回答
  • 1楼网友:封刀令
  • 2021-04-04 22:48

假如有个全局变量int a,存放于myfile.h文件中,则在类中用,需要添加

#include "myfile.h"

extern int a;

即可

  • 2楼网友:人類模型
  • 2021-04-04 22:35
。。。。怎么解决。。。知道要返回,那你就不要返回临时的啊。。。在函数外面定义一个不好吗?
  • 3楼网友:老鼠爱大米
  • 2021-04-04 21:18
class AAA { public AAA getNewAAA() { ..... return AAA; } } 是这种效果?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯