我是一名有用的助手,可以为您翻译文本。
正在阅读C++核心指南,并遇到了这条规则:“在初始化变量之前不要声明变量”。https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es22-dont-declare-a-variable-until-you-have-a-value-to-initialize-it-with 它将以下代码描述为不好的:
然而,即使我使用了智能指针,这种方式仍然感觉不必要/不安全,最重要的是比最初的方法更糟糕。最佳解决方案是什么?
正在阅读C++核心指南,并遇到了这条规则:“在初始化变量之前不要声明变量”。https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es22-dont-declare-a-variable-until-you-have-a-value-to-initialize-it-with 它将以下代码描述为不好的:
SomeLargeType var;
if (cond) // some non-trivial condition
Set(&var);
else if (cond2 || !cond3) {
var = Set2(3.14);
}
else {
var = 0;
for (auto& e : something)
var += e;
}
很遗憾,这个点没有描述如何解决这个确切的问题的方法。有时候你只需要根据条件以不同的方式初始化一个大对象。 我能想到的唯一的绕过方法是像这样:
SomeLargeType * var;
if (cond) // some non-trivial condition
var = new SomeLargeType(123);
else if (cond2 || !cond3) {
var = new SomeLargeType(3.14);
}
然而,即使我使用了智能指针,这种方式仍然感觉不必要/不安全,最重要的是比最初的方法更糟糕。最佳解决方案是什么?
else
情况。 - Adrian Mole