为什么C ++编译器在某些情况下不会生成默认构造函数,而在其他情况下会生成默认构造函数

时间:2020-04-16 12:02:03

标签: c++ class object copy-constructor

玩具代码如下:

class DD {
    public:
        int a{0};
        int b{0};

        DD(int a, int b): a(a), b(b) {}
};

void main() {
    DD d1;
    DD d2(d1);

}

这不会通过编译检查,因为我定义了DD(int a, int b)的构造函数,编译器将不会使用该构造函数生成默认构造函数。但是,它似乎不影响DD(DD& d)

的默认构造函数的生成
class DD {
    public:
        int a{0};
        int b{0};

        DD(int a, int b): a(a), b(b) {}
};

void main() {
    DD d1(1, 2);
    DD d2(d1);
}

为什么可以工作?似乎在定义DD(int, int)时,编译器不会生成其他默认构造函数,但是为什么我仍然可以使用DD(DD&)构造对象?

0 个答案:

没有答案