`
yangyou230
  • 浏览: 1650054 次
文章分类
社区版块
存档分类

C++中构造函数与初始化列表的区别

 
阅读更多

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。

上面的例子中两个情况结果一样,使用初始化列表是显示的初始化类成员,而构造函数是对类的成员赋值,而没有进行显式的初始化。

初始化和复制对内置类型的成员没有大的区别,以上两种方式都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。但有的时候必须用带有初始化列表的构造函数:

1.成员类型是没有默认构造函数的类。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。

2.const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。
分享到:
评论

相关推荐

    C++构造函数初始化列表

    关于“C++构造函数初始化列表 ”的实例分析

    成员初始化列表与构造函数体中的区别详细解析

    C++ Primer中在讲构造函数初始化列表的时候有这么一段话:无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果是相同的。不同之处在于,使用构造函数初始化列表的版本初始化数据成员,...

    C++关于构造函数的初始化

    关于C++构造函数初始化的详细介绍,值得学习的东西哦

    C++ 构造函数初始化列表的好处

     Derive 类构造函数两个 Base 类型的参数,分别赋给该类两个 Base 类型的成员变量 b1、b2,一个使用初始化列表,一个使用等于号赋值。输出结果如下:  前两行输出是主函数前两行构造 b1、b2 对像时调用的带...

    c++ 子类构造函数初始化及父类构造初始化的使用

    主要介绍了c++ 子类构造函数初始化及父类构造初始化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    关于C++中构造函数初始化成员列表的总结

    1.只能在构造函数初始化列表初始化的成员变量的类型?  a.const成员变量  b.引用类型的成员变量  c.static不能在初始化列表中进行...以上就是小编为大家带来的关于C++中构造函数初始化成员列表的总结全部内容了,希望

    C++类构造函数初始化列表

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(0...

    c++ 构造函数的初始化列表

    首先,运行下图中的C++代码,输出是...在C++中,成员变量的初始化顺序与变量在类型中的声明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是

    c++初始化列表和构造函数初始化区别.pdf

    c++初始化列表和构造函数初始化区别.pdf

    详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它...

    C++初始化列表使用

    讲解了为什么要初始化列表,初始化列表和在构造函数中赋值的区别

    计数器实现了默认构造函数用于初始化,c++面向对象程序设计书上的习题

    实现了默认构造函数用于初始化,c++面向对象程序设计书上的习题

    C++中的构造函数、析构函数剖析

    C++中的构造函数、析构函数剖析 在C+ + 中, 构造函数是一个在构件对象的时 候调用的特殊的函数, 其目的是对对象进行初始 化工作, 从而使对象被使用之前可以处于一种合 理的状态。析构函数是在撤消对象时, 收回对象 ...

    c++基础语法:构造函数初始化列表

    C++为类中提供类成员的初始化列表 类对象的构造 顺序是这样的:1.分配内存,调用构造函数 时,隐式/显示的初始化各数据 成员2.进入构造函数后在构造函数中执行一般计算 使用初始化列表有两个原因: 1.必须这样做:...

    C++构造函数初始化顺序详解

    2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 3.创建一个对象时,系统自动调用构造函数 析构函数 1.析构函数没有参数,也没有返回值。不能重载,也...

    构造函数的部分初始化

    构造函数的部分初始化,可以更好地了解函数如何初始化

    C++构造函数初始化顺序

    C++构造函数按下列顺序被调用:  (1)任何虚拟基类的构造函数按照它们被继承的顺序构造;  (2)任何非虚拟基类的构造函数按照它们被继承的顺序构造;  (3)任何成员对象的构造函数按照它们声明的顺序调用;  (4...

    c++ 入门 构造函数 时间类

    2)构造函数采用带初始化列表的构造函数(参数默认值为空或零) 3)显示的写出析构函数 4)成员函数分别为:setDate ,getDate ,setTime ,getTime。 5)分别在栈区、堆区、全局区分别创建三个对象(创建时不提供参数...

    C++初始化函数列表详细解析

    原因:C++可以定义引用类型的成员变量,引用类型的成员变量必须在构造函数的初始化列表中进行初始化。对于类成员是const修饰,或是引用类型的情况,是不允许赋值操作的,(显然嘛,const就是防止被错误赋值的,引用...

Global site tag (gtag.js) - Google Analytics