设为首页 加入收藏

TOP

C++对象模型――Default Constructor的建构操作(第二章)(三)
2015-11-21 00:56:48 来源: 作者: 【 】 浏览:6
Tags:对象 模型 Default Constructor 建构 操作 第二章
何constructor,编译器必须为它合成一个default constructor.

总结

有四种情况,会导致编译器必须为未声明constructor的classes合成一个default constructor‘,C++ Stardard把那些合成物称为implicit nontrivial default constructor。被合成出来的constructor只能满足编译器(而非程序)的需要。它之所以能够完成任务,是借着调用member object或者base class的default constructor或者为每一个object初始化其virtual function机制或virtual base class机制而完成。至于没有存在那四种情况而又没有声明任何constructor的classes,它们拥有的是implicit trivial default constructor,它们实际上并不会被合成出来.
在合成的default constructor中,只有base class subjects和member class objects会被初始化,所有其它的nonstatic data member,如整数,整数指针,整数数据等都不会被初始化,这些初始化操作对程序而言或许需要,但对编译器则并非必要.如果程序需要一个把某指针设为0的default constructor,那么提供它的应该是程序员.
C++新手一般有两个常见的误解:
1. 任何class如果没有定义default constructor,就会被合成出来
2. 编译器合成出来的default constructor会明确设定class 内有每一个data member的默认值
这两个都是错误的.


?

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇静态代理与动态代理 下一篇数据结构之---C++语言实现图的十..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: