定义内联默认构造函数C++

defining an inline default constructor C++

本文关键字:构造函数 C++ 默认 定义      更新时间:2023-10-16
public:
A();         
A(int B){*C = B - 1;};
private:
int *C;

我相信这就是正确调用两个默认构造函数的方法,但视觉工作室给了我错误。这段代码有什么问题?

这将编译。它与您的程序有何不同?

class A {
public:
  A() {} // Define (not merely declare) default constructor
  A(int B) { C = B - 1; } // Note: don't use uninitialized pointer
private:
  int C; // Note: not a pointer
};

一个构造函数确实是默认构造函数。然而,另一个"构造函数"必然更多地作为析构函数运行,因为它通常会访问无法访问的内存,这反过来又通常会使程序"崩溃"。您应该查找"成员初始值设定项列表"。