c++中构造函数用default

在C++中约定如果一个类中自定义了带参数的构造函数,那么编译器就不会再自动生成默认构造函数。

show the code,下面这段代码会报错,因为定义了一个带参的构造函数,编译器就不会再自动生成无参默认构造函数。

#include <iostream>

class Test {
public:
  int a;
  Test(int data) { a = data; }
};

int main() {
  Test t;
  return 0;
}

image-20231117234618785
 
 

如果多加个Test() = default;就可以让让编译器继续生成这个默认构造函数。(这里的Test是我做测试的类名)

#include <iostream>

class Test {
public:
  int a;
  Test() = default;
  Test(int data) { a = data; }
};

int main() {
  Test t;
  return 0;
}

image-20231117234932559

编译通过。

THE END