C ++构造函数和函数调用

时间:2018-02-04 07:19:53

标签: c++ constructor

#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会使构造函数第四次调用。

1 个答案:

答案 0 :(得分:4)

  

我的问题是,为什么分配x3会使构造函数第四次调用。

因为add中有以下行。

    complex_1 temp;