在“Inside the C object model”一书中,作者说:
There are three drawbacks of an explicit initialization list:
It can be used only if all the class members are public.
It can specify only constant expressions (those able to be evaluated at compile time).
3. Because it is not applied automatically by the compiler,the likelihood of failure to initialize an object is significantly heightened.
我不知道为什么显式初始化列表更容易失败. “编译器自动应用”的含义是什么?
是否有一些例子来证明这一观点.
感谢您的回答.
解决方法
以下是Lipmann书中显式初始化列表的示例.
Point1 local1 = { 1.0,1.0,1.0 };
我认为他要做的是你必须记住使用显式初始化!换句话说,他们不是建筑师的替代者.如果你忘了使用清单……
Point local2;
…然后你“无法初始化对象”.并不是初始化列表可能以任何方式失败,只是因为您可能无法记住使用它.
与构造函数比较
Point::Point (int x=0,int y=0,int z=0) : x(x),y(y) z(z) {};
您现在可以同时执行这两项操作,但仍可获得定义良好的结
Point local3(1.0,1.0); Point local4; // uses default values of 0,0