在单独的函数或构造函数中初始化 在C++中,或者一般来说,下面哪两种方法被认为是更好的风格?为什么?
方法1在单独的函数或构造函数中初始化 在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
// 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
。