C ++代码样式 - 创建对象的最佳位置

时间:2012-07-06 14:50:03

标签: c++ performance coding-style readability

我和我的朋友前几天正在讨论哪种代码风格更好。

案例A:

int function()
{
    largeobject a;
    //do some stuff without a
    //do some stuff with a
}

案例B:

int function()
{
    //do some stuff without a
    largeobject a;
    //do some stuff with a
}

所以哪个代码在速度和可读性方面更好。

3 个答案:

答案 0 :(得分:10)

您应该尽可能在本地声明对象的变量/实例。因此,在这种情况下,B将是最佳选择。

考虑一下,如果您在函数体的顶部声明它,那么阅读代码的其他人可能会想知道您实际使用该对象的位置。因此,通过使声明接近您实际使用的位置将使其更容易阅读。

案例A和B之间不应有任何巨大的性能差异。

有一些特殊情况,例如分配大块内存或线程池。在这些情况下,由于可能是时间和资源的消耗,您可能需要找到一个更好的地方来分配它们。

如果您不熟悉编程,可能需要考虑阅读Scott Meyers的书籍Effective C++。第26项讨论它:尽可能推迟变量定义。

答案 1 :(得分:2)

您应该使用案例B.您无需在需要之前创建对象。

此外,您的编译器不会将largeobject a();解释为使用默认构造函数创建对象,而是将其作为函数声明。这被称为“最令人烦恼的解析”。

答案 2 :(得分:0)

案例B是最好的。这种情况在S.Mcconnell书中解释 - 完整代码。而你错了:

  

所以哪个代码在速度和可读性方面更好。

案例B因其他原因更好。