当前位置:  编程技术>c/c++/嵌入式

C++初始化列表学习

    来源: 互联网  发布时间:2014-10-19

    本文导语:  何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的克访问性不同,...

何谓初始化列表
与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的克访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。

代码如下:

struct foo
{
    string name ;
    int id ;
    foo(string s, int i):name(s), id(i){} ; // 初始化列表
};

构造函数的两个执行阶段
构造函数的执行可以分成两个阶段,初始化阶段和计算阶段,初始化阶段先于计算阶段。

初始化阶段
所有类类型(class type)的成员都会在初始化阶段初始化,即使该成员没有出现在构造函数的初始化列表中。

计算阶段
一般用于执行构造函数体内的赋值操作,下面的代码定义两个结构体,其中Test1有构造函数,拷贝构造函数及赋值运算符,为的是方便查看结果。Test2是个测试类,它以Test1的对象为成员,我们看一下Test2的构造函数是怎么样执行的。

代码如下:

struct Test1
{
    Test1() // 无参构造函数
    {
        cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java map(HashMap TreeMap)用法:初始化,遍历和排序详解
  • 请问:BootLoader初始化硬件时,会对PLL和时钟初始化,这个PLL是什么啊,怎么初始化它啊?
  • 关于编译时初始化和动态初始化
  • 为什么在我的引导程序setup.asm里,初始化8253定时器后,程序不能往下运行,而取消初始化后能???
  • C#中结构(struct)的部分初始化和完全初始化实例分析
  • 函数外初始化与函数内初始化详细解析
  • 在Jbuilder中,如何设置一个按钮的初始位置以及初始化按钮的大小?
  • 新手求救!!关于变量初始化
  • 一个关于GDT初始化的问题
  • 操作系统的初始化问题?
  • inode在哪里初始化
  • Java对象初始化顺序的使用
  • 为什么SkinUtils这个类不用实例和初始化?
  • jsp初始化错误是怎么回事
  • 请教NAS1500机器的密码怎么初始化
  • 关于初始化的一点不明白的地方
  • 关于初始化问题
  • 非静态初始化模块和构造器的区别?
  • 请问如何判断一个对象是否已经初始化???
  • java安全里面的PrivateKey和PublicKey是怎么初始化的??
  • 怎么给我的控件初始化,并将它显示出来?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3