我想要整洁的头文件,首先列出公共(public)成员,然后是私有(private)成员。
class A
{
public:
A() : y(0), z(0), x(y + z)
{}
int x;
private:
int y;
int z;
};
成员按照它们被声明的顺序初始化,所以这个构造函数是错误的,因为当 x 使用它们时 y 和 z 没有被初始化。
这只是我可以写 x(0) 的示例,但如果这些不是整数而是更大的类型,那么它会很麻烦。 为了解决这个问题,我需要首先列出私有(private)成员 y 和 z, 然后是公共(public)成员 x。 有什么办法可以让我的私有(private)成员留在底部,同时在初始化列表中首先初始化它们?
如果没有,请指导我如何订购成员(member),因为我在网上找不到任何这样的例子。首先列出一些公共(public)成员,然后列出一些私有(private)成员,然后列出更多公共(public)成员,这对我来说似乎很脏,但也许我错了。
最佳答案
使用委托(delegate)构造函数你可以这样写:
class A
{
public:
A() : A(0, 0) { }
{}
int x;
private:
explicit A(int y_, int z_) : x(y_ + z_), y(y_), z(z_) { }
int y;
int z;
};
关于c++ - 如何维护类成员的顺序并仍然有一个有效的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54633245/