运行结果为什么只有一个constructor呢? 5C
#include <iostream>
using namespace std;
class A
{
    int a,b;
public:
    A(int i,int j):a(i),b(j){cout<<"constructor"<<endl;}
    ~A(){cout<<"destructor"<<endl;}
};
int main()
{
    A obj1(1,2);
    A obj2=obj1;
    return 0;
}

3个回答

A obj2 = obj1;
调用的是拷贝构造函数,你可以写
A(A& a)
{
...
}

A obj1(1,2);调用的是构造函数;
A obj2=obj1;调用的是拷贝构造函数;

因为以下的赋值并没有调用它的显式构造函数,而是调用编译器生成的隐式拷贝构造函数。

A obj2=obj1;

如果我们自己写显式拷贝构造函数,就会打印。

// test-c11.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
    int a, b;
public:
    A(int i, int j) :a(i), b(j) { cout << "constructor" << endl; }
    A(A& a1) 
    {
        a = a1.a;
        b = a1.b;
        cout << "copy constructor" << endl;
    }
    ~A() { cout << "destructor" << endl; }
};

int main()
{
    A obj1(1, 2);
    A obj2 = obj1;
    return 0;
}

输出

constructor
copy constructor
destructor
destructor
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐