微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在“Inside the C object model”一书中,作者说:

There are three drawbacks of an explicit initialization list:

  1. It can be used only if all the class members are public.

  2. 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

原文地址:https://www.jb51.cc/c/119242.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐