例如:
#include<iostream>
using namespace std;
class exa{
private:
int a;
public:
exa(int b = 0):a(b){}
exa Add(exa obj){ return exa(a+obj.geta() ); } //What happened over there?
int geta(){return a;}
};
int main()
{
exa c1(2),c2;
c2.Add(c1);
cout << c2.geta() << endl;
return 0;
}
答案 0 :(得分:1)
请注意,您正在将参数传递给构造函数。所以你没有返回构造函数,而是调用它来构造类的对象。因为您没有使用new
,所以会在堆栈上分配对象的存储空间。
此处,方法Add
返回(按值)类exe
的对象。
实际上,在main
中使用它的方式,它实际上没有做任何事情,因为c2.Add(c1)
的结果会被忽略。
如果你写了c2 = c2.Add(c1)
,那么新对象将被复制(使用默认作业operator=
)到c2
,你应该看到输出2
。