def*_*ode 5 c++ ctor-initializer
我刚刚看了一个由GMAN评论说
class A
{
public:
A() :
m_ptr() // m_ptr is implicitly initialized to NULL
{ }
};
Run Code Online (Sandbox Code Playgroud)
应该优先考虑
class A
{
public:
A() :
m_ptr(NULL) // m_ptr is explicitly initialized to NULL
{ }
};
Run Code Online (Sandbox Code Playgroud)
请注意NULL第一个示例中缺少的内容.
GMan对吗?这可能有点主观,所以"你更喜欢空的初始化器进行默认初始化吗?" 可能更合适.
此外,如果您更喜欢空的初始化器,这是否适用于其他整体成员?
class B
{
public:
B() :
m_count(),
m_elapsed_secs()
{}
private:
std::size_t m_count;
float m_elapsed_secs; //the elapsed time since instantiation
};
Run Code Online (Sandbox Code Playgroud)
当然,请捍卫您的观点,并说明为什么一个人应该优先于另一个.
我更喜欢显性.正如这个问题的一些错误答案已经证明的那样,对于每个人来说,并不是那么明显,int()并且int(0)是等同的.
我认为不提供显式值的优点是,如果您更改了类型,则无需重新访问初始化列表.