#include <iostream>
#include<stdio.h>
using namespace std;
class complex_1
{
int a,b;
public:
complex_1()
{
cout<<"Cat"<<endl;
}
void assign_1(int x,int y)
{
a=x; b=y;
}
void show()
{
cout<<a<<" "<<b<<endl;
}
complex_1 add(complex_1 c)
{
complex_1 temp;
temp.a=a+c.a;
temp.b=b+c.b;
return (temp);
}
};
int main()
{
complex_1 x1,x2,x3;
x1.assign_1(3,4);
x2.assign_1(5,6);
x3=x1.add(x2);
x3.show();
return 0;
}
让我们不要专注于这些大的随机代码行,让我解释一下
先点。
我正在研究建造者,在练习它们时我发现了这一点。
所以假设我在上面的代码名为complex_1
中创建了一个构造函数并且当我创建实例(对象)时,我做了这个,
complex_1 x1,x2,x3;
非常基本,我知道它将发送给stdout
我的构造函数中的行是 - &#34; Cat&#34;,3次。
所以我的问题是
当我在主要的
写作时int main()
{
complex_1 x1,x2,x3;// this give three function calls for constructor
x1.assign_1(3,4);
x2.assign_1(5,6);
x3=x1.add(x2);/// this will give one more function call for constructor
x3.show();
return 0;
}
TLDR:在这里我得到四个&#34; Cat&#34;,我知道为什么有三个函数调用,而且我也知道为什么有第四个调用它是因为这一行。
x3=x1.add(x2);
我的问题是,为什么分配x3会使构造函数第四次调用。
答案 0 :(得分:4)
我的问题是,为什么分配
x3
会使构造函数第四次调用。
因为add
中有以下行。
complex_1 temp;