【发布时间】:2012-06-06 23:22:20
【问题描述】:
过去几天我一直在学习 C++,我看到了两种我无法确定两者优缺点的格式。希望有人可以在这里帮助我。
第一个变量被初始化为 var(value)
class Foo
{
public:
Foo(): itsVar1(2), itsVar2(345){}
private:
int itsVar1;
int itsVar2;
};
第二个用赋值运算符初始化var = value。
class Foo
{
public:
Foo()
{
itsVar1 = 2;
itsVar2 = 345;
}
private:
int itsVar1;
int itsVar2;
};
一个比另一个有优势吗?是个人喜好吗?
第一种样式(?)对我来说看起来更令人困惑。看起来您正在调用一个方法并传入该值。看起来很含蓄;而第二种方法非常明确,作为来自 Python 的人“显式优于隐式”,我更喜欢第二种方法。我错过了什么?
【问题讨论】:
-
“:”语法是一个 C++“初始化列表”。在某些情况下,您必须使用它们。在其他情况下(例如您的示例),您可以在构造函数主体和初始化列表之间进行选择。有关更多详细信息,请参阅 James McNellis 引用的链接或 Google 的“C++ 构造函数与初始化列表”。这里还有一个链接:forums.codeguru.com/showthread.php?t=464084
标签: c++