【发布时间】:2017-11-18 09:31:14
【问题描述】:
我已经定义了以下结构及其默认构造函数:
struct State
{
State()
{
// Initialize both stacks with unit matrices
objStack.push(Matrix(1, 1, 1, SCALE));
lightStack.push(Matrix(1, 1, 1, SCALE));
}
std::stack<Affine> objStack;
std::stack<Affine> lightStack;
int maxDepth = 5;
std::unique_ptr<Point[]> vertices = nullptr;
Colour ambient = Colour(0.2);
};
如果我在实例化State结构时执行了我声明的构造函数,最后3个变量是否仍会初始化为5,nullptr和Colour(0.2)?或者我的构造函数应该是这样的:
State()
{
// Initialize both stacks with unit matrices
objStack.push(Matrix(1, 1, 1, SCALE));
lightStack.push(Matrix(1, 1, 1, SCALE));
maxDepth = 5;
vertices = nullptr;
ambient = Colour(0.2);
}
我不确定这里会发生什么。
【问题讨论】:
-
你的第一个版本编译了吗?
-
它确实可以编译!
-
不需要显式初始化默认有值的变量。在您的第二个代码中,sn-p 成员将被初始化两次。
-
东西不能被初始化两次。
-
对不起,我的意思是会创建两个 Color 类的实例,等等
标签: c++ struct constructor initialization