为什么显式初始化列表更可能失败?

在“C ++对象模型内部”一书中,作者说:

显式初始化列表有三个缺点:

  • 只有所有班级成员都是公开的,才能使用它。

  • 它只能指定常量表达式(可在编译时进行评估的表达式)。

  • 3.由于它不是由编译器自动应用的,因此初始化对象失败的可能性显着增加。

    我不知道为什么显式初始化列表更可能失败。 “由编译器自动应用”的含义是什么?

    有没有一些例子来证明这一观点。

    感谢您的回答。


    下面是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, 1.0);
     Point local4; // uses default values of 0,0,0
    
    链接地址: http://www.djcxy.com/p/79689.html

    上一篇: Why explicit initialization list is more likely to failure?

    下一篇: Neo4j time dependent graph model