Use*_*ser 10 c++ constructor pointers initializer-list ctor-initializer
假设我有:
// MyClass.h
class MyClass
{
public:
MyClass();
private:
Something *something_;
}
// MyClass.cpp
MyClass::MyClass()
{
something_ = new Something();
}
Run Code Online (Sandbox Code Playgroud)
我应该在MyClass构造函数的构造函数初始化列表中初始化something_到NULL(或0)吗?或者这是不必要的,因为我在构造函数的主体中分配它?建议的做法是什么?
Moo*_*uck 11
通常,您只在初始化列表或正文中分配一次,除非正文初始化可能发生或可能不发生,或者具有先决条件代码:
MyClass::MyClass()
{
//this code must happen first
// _now_ max is known
something_ = new Something(max);
}
MyClass::MyClass()
{
if (max)
something_ = new Something(max);
else
something_ = NULL;
}
MyClass::MyClass()
: something_(new Something())
//as pointed out in the comments, use smart pointers
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15615 次 |
| 最近记录: |