|
|
1
20
重要的是C++中的声明不是表达式。
咬紧牙关,使用内部if。范围规则非常有用,并且您的逻辑非常明确:
|
|
|
2
4
关于优势: 总是建议在您第一次需要变量时定义变量,而不是之前的一行。这是为了提高代码的可读性,因为不必滚动和搜索CThing的定义位置,就可以知道CThing是什么。 同时,将作用域缩小到循环/if块,会导致变量在代码块执行后不被引用,这使得它成为垃圾收集的候选对象(如果语言支持此功能)。 |
|
3
3
它是
不良风格
,因为在
|
|
|
4
2
我通常不这样做的一个原因是因为在条件测试中缺少“=”的常见错误。我使用设置了错误/警告的lint来捕捉这些错误/警告。然后,它会在条件语句中对所有赋值进行叫喊。 |
|
|
5
2
只是FYI一些旧的微软C++编译器(Visual Studio 6和.NET 2003)在一些情况下不太符合范围规则。
我应该在范围之外,但那是/是有效代码。我相信它是作为一个功能来播放的,但在我看来,这只是不合规。不遵守标准是不好的。就像一个关于IE和Firefox的网络开发者一样。 有VS的人能检查一下这是否仍然有效吗? |
|
|
6
2
这
犯错误看见 Wesley Tarle's answer |
|
|
7
2
很多事情。首先,简单的指针。请尽量避免它们。使用引用、可选、唯一\u ptr、共享\u ptr。作为最后的手段,编写自己的类来处理指针所有权而不是其他。 如果需要C++11,请使用统一初始化(最好使用C++14以避免C++11缺陷):-它避免了=vs==混淆,并且在检查参数时更严格。
确保实施
如果C++17不是一个选项,请按照其他人的建议使用上面的声明。
|
|
|
8
1
您可以在其中包含初始化语句
|
|
9
0
您还可以将分配包含在一组额外的()中,以防止出现警告消息。 |
|
|
10
0
我认为这有点危险。下面的代码要安全得多,括号仍然会以您想要的方式限制pThing的范围。 我假设GetThing()有时返回NULL,这就是为什么我在if()语句中放了那个有趣的子句。它防止对空指针调用IsReallySomething()。
|
|
|
11
0
|
|
|
12
0
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |