【发布时间】:2012-08-23 14:30:24
【问题描述】:
我对类成员变量初始化有一个困惑。
假设在我的 .h 文件中是:
class Test {
int int_var_1;
float float_var_2;
public:
Test();
}
我的 .cpp 将是:
Test::Test() : int_var_1(100), float_var_2(1.5f) {}
现在当我实例化一个类时,变量被初始化为 100 和 1.5。
但如果这就是我在构造函数中所做的全部,我可以在我的 .cpp 中执行以下操作:
int Test::int_var_1 = 100;
float Test::float_var_2 = 1.5f;
我对在构造函数中初始化变量或使用解析运算符之间的区别感到困惑。
这种用作用域解析在构造函数之外初始化变量的方法是否只适用于静态变量,还是有一种方法也可以用于普通变量?
【问题讨论】:
-
第二种方法不起作用,因为没有实例,这些是实例变量——它们需要一个实例。与 C++11 类内初始化 (
class C {int i = 5;}) 相比,这实际上只填充了 5,否则会发生初始化。它实际上并没有更早地初始化任何东西。
标签: c++ constructor initialization