c ++破坏手册

Sup*_*ile -7 c++ constructor

我正在尝试创建能够快速运行的代码.为此,我在需要时对一些变量进行了初始化.例如:(我无法更改标签\ goto部分,我必须在这种情况下使用它)

bool Func(bool BooleanParameter) {
    if (BooleanParameter)
        goto _true;
    else
        goto _false;
_true:
    string str; //Some code after that one that does with this variable
    return false;
_false:
    return true; //Exception because str doesn't initialized
}
Run Code Online (Sandbox Code Playgroud)

但是有一个例外,因为有一种方法可以不初始化变量,并且变量最终会破坏.

Pau*_*l R 6

为什么不呢:

bool Func(bool booleanParameter)
{
    if (booleanParameter)
    {
        string str;
        // ...
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这似乎达到了预期的结果,没有可疑的使用goto等.

  • @SuperFile不,*你做**不***.保罗的代码同样有效.它是有效的,而你的不是.(但我会反转条件以减少代码的缩进级别.) (4认同)
  • @SuperFile嗯,你的代码毫无意义.我严重怀疑你的真实代码更有意义. (3认同)
  • @SuperFile再一次,你似乎对汇编有很多误解.请忘记这一点,并注意好好构建代码. (3认同)
  • 看看以前的一些问题,你似乎对编程和性能有很多误解.在花费大量时间根据误解编写代码之前,您可能希望花一些时间阅读一般的优秀编程技术和C++. (2认同)
  • @SuperFile相信我们,我们很多人在这里回答都写了很多快速代码.像任何语言一样,汇编将使你无处可去,除非你学会阅读和理解它.阅读编译器生成的程序集,以便进行有根据的尝试,是优化的最后一步. (2认同)
  • @SuperFile,`goto`只是一个汇编线,导致CPU流水线被刷新,导致性能比可能的数十个线性操作更差. (2认同)