比方说,我们想声明三个整数,p
,q
,和r
.最好的做法是将它们初始化为0.ç这样做是这样:
int p, q, r; p = q = r = 0;
在C++这样做的方式是
int p(0), q(0), r(0);
在C中,事情是美好而紧张的; 0仅使用一次.相反,C++调用要求0重复三次 - 每个变量一次.有点冗长.
有没有更简洁的方法使用C++方法初始化变量,还是每个变量声明所需的初始值?
另外,将C风格的初始化与C++代码混合在一起有什么问题吗?谢谢:^)
编辑:修复了正确编译的代码.现在,声明和初始化变量需要两行,所以问题不是很好,但我会把它留给后人.希望有人帮助.
最佳做法是将它们初始化为0.
这可能甚至是有害的,因为它会使编译器的保护变得沉默.考虑以下代码:
int p, q, r; p = q = r = 0; // ... p = FIRST_INDEX; r = LAST_INDEX; // ups, we forget to initialize q with some real value // ... doSomething(p, q, r);
通常情况下,您会收到如下警告:
警告:'q'在此函数中未初始化使用[-Wuninitialized]
但由于q
已经初始化,编译器认为这很好.
如果您有C++或至少符合C99标准的编译器,那么有人可能会说,通过移动最接近第一次使用的变量声明,可以更好地设计代码:
// some executable code int p = FIRST_INDEX; int q = LAST_INDEX; int r = getSampleCoefficient(); doSomething(p, q, r);
这样,可以完全避免前面示例中提出的问题,因为声明和实际代码之间没有间隙.
您可以p = q = r = 0;
在C++中使用,这只是编码风格的问题.