在没有构造函数的情况下,C++中是否有一种预初始化结构或类的方法?

Hi-*_*gel 2 c++ constructor struct class

我的意思是:我有一堆不同的结构/类,所有这些都应该用已知的预先值初始化.除了预初始化之外,这些结构/类永远不会以其他方式使用,因此不需要构造函数 - 它只是浪费额外的内存,程序中的额外CPU周期以及源代码中的额外空间.

bst*_*our 6

如果您可以访问C++ 11编译器,则可以将构造函数标记为constexpr在编译时运行它们.这样做的好处是,您可以在运行时构建对象.例如

struct Point2D {
    constexpr Point2D(int x, int y) : x_{x}, y_{y} {}
    int x_, y_;
};
Run Code Online (Sandbox Code Playgroud)

现在你可以使用Point2D的构造函数在编译时初始化它,而不是运行时:

Point2D p{3, 4}; // no runtime overhead.
Run Code Online (Sandbox Code Playgroud)


Rob*_*obᵩ 5

在有限的情况下,可以初始化结构和类.

struct splendor {
    int i, j;
    char *name;
};

splendor iforus = { 1, 2, "Extra!" };
Run Code Online (Sandbox Code Playgroud)

此外,如果您从不需要结构类型的名称:

struct {
    int k;
    float q;
} anon_e_mouse = { 1, 2.3 };
Run Code Online (Sandbox Code Playgroud)