【发布时间】:2017-01-17 00:53:05
【问题描述】:
假设我们要声明三个整数,p、q 和 r。最佳做法是将它们初始化为 0。C 这样做的方式是:
int p, q, r;
p = q = r = 0;
C++ 的方式是
int p(0), q(0), r(0);
在 C 中,事情是美好而紧凑的; 0 只使用一次。相比之下,C++ 调用需要 0 重复三次——每个变量一次。有点啰嗦。
有没有更简洁的使用C++方法初始化变量的方法,或者是每个变量声明都需要初始值?
另外,将 C 风格的初始化与 C++ 代码混合起来有什么问题吗?谢谢 :^)
编辑:修复了正确编译的代码。现在,声明和初始化变量需要两行,所以这个问题不是很好,但我会留在这里留给后代。希望对某人有所帮助。
【问题讨论】:
-
"最佳实践是将它们初始化为 0。" --> “最佳实践是初始化它们”。不同意“到 0”部分。
-
根据我的经验,最佳做法是 a) 更好的变量名称和 b) 每行一个初始化。
-
有很多不同的风格,但没有一个正确的答案。我喜欢在声明它们的行上一起用相同的值初始化变量,例如
int p = 0, q = 0, r = 0; -
“C 的实现方式”是
int p = 0, q = 0, r = 0;甚至是int p = { 0 }, q = { 0 }, r = { 0 };(使用= { 0 }成语)。我不知道你为什么用赋值替换初始化并将其称为“C 方式执行此操作”。没有用 C 中的赋值替换初始化的传统(除了由 C89/90 的限制引起的一些重点情况)。当你可以使用初始化时,永远不要使用赋值。 -
而且,正如@chux 正确指出的那样,最佳实践是给变量 meaningful 初始化器,而不是虚拟的临时初始化器。人们甚至可以争辩说,让变量保持未初始化比使用虚拟值执行货物崇拜风格的初始化更好。
标签: c++ c variables initialization