在"Inside the C++ object model"一书中,作者说:
显式初始化列表有三个缺点:
只有当所有班级成员都是公开的时候才能使用它.
它只能指定常量表达式(能够在编译时进行评估的表达式).
3.因为它不是由编译器自动应用的,所以初始化对象失败的可能性显着提高.
我不知道为什么显式初始化列表更容易失败."编译器自动应用"的含义是什么?
是否有一些例子来证明这一观点.
感谢您的回答.
这是 Lipmann 书中的显式初始化列表的示例。
Point1 local1 = { 1.0, 1.0, 1.0 };
Run Code Online (Sandbox Code Playgroud)
我认为他想要表达的观点是你必须记住使用显式初始化!换句话说,它们不能替代构造函数。如果您忘记使用该列表...
Point local2;
Run Code Online (Sandbox Code Playgroud)
...那么你“无法初始化对象”。这并不是说初始化列表可能会以任何方式失败,只是您可能忘记使用它。
与构造函数比较
Point::Point (int x=0, int y=0, int z=0) : x(x), y(y) z(z) {};
Run Code Online (Sandbox Code Playgroud)
您现在可以同时执行这两项操作,并且仍然可以获得明确的结果。
Point local3(1.0, 1.0, 1.0);
Point local4; // uses default values of 0,0,0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |