在单独的函数或构造函数中初始化 在C++中,或者一般来说,下面哪两种方法被认为是更好的风格?为什么?

在单独的函数或构造函数中初始化 在C++中,或者一般来说,下面哪两种方法被认为是更好的风格?为什么?,c++,coding-style,initialization,C++,Coding Style,Initialization,方法1 // Instantiate an Application object Application application; // Initialise the Application application.initWithParams( "WindowTitle", 800, 600 ); 方法2 // Instantiate and initialise an Application object Application application = *n

方法1

// Instantiate an Application object
Application application;

// Initialise the Application
application.initWithParams(
    "WindowTitle",
    800,
    600
);
方法2

// Instantiate and initialise an Application object
Application application =  *new Application(
    "WindowTitle",
    800,
    600
);
PS:这段代码将直接进入我的主函数。我还没有测试过两种方法,我不知道C++中有没有更好的方法?

编辑:方法3(来自Pubby)

为什么不是这个

// Instantiate an Application object
Application application(
    "WindowTitle",
    800,
    600
);
(第一个通常可以避免。永远不要使用第二个)

为什么不这样做

// Instantiate an Application object
Application application(
    "WindowTitle",
    800,
    600
);

(第一种方法通常可以避免。永远不要使用第二种方法)

我个人倾向于使用构造函数和参数,因为另一种方法可能会使对象处于未知状态。如果参数太多,可以将它们包装在ApplicationParameter类中。

我个人选择构造函数和参数,因为另一种方法可能会使对象处于未知状态。如果你得到了太多的参数,你可以把它们封装在AppultPosialC类中。

第二个是,不考虑样式,因为它是一个保证的内存泄漏。一本关于C++的好书可能是最好的建议。@ KerrekSB听起来比实际情况要糟糕得多。第二个是不考虑任何风格,因为它是一个保证内存泄漏。一本关于C++的好书可能是最好的建议。@ KerrekSB听起来比实际情况要糟糕得多。我没有对新声明发表评论,因为我不认为这是一个问题,但我认为Pubby的建议是尽量避免它。我没有对新声明发表评论,因为我不认为这是一个问题,但我认为Pubby的建议是尽量避免它。因为我不知道这是可能的。谢谢!有时,这是不可能的,因为在创建对象时,您没有需要传递给构造函数的所有信息。在这种情况下,您可能希望使用
std::unique\u ptr
,因为我不知道这是可能的。谢谢!有时,这是不可能的,因为在创建对象时,您没有需要传递给构造函数的所有信息。在这种情况下,您需要使用
std::unique\u ptr