C++构造函数中的初始化:C++构造函数后面的冒号
来源:互联网 发布:php前端要用到dw吗 编辑:程序博客网 时间:2024/06/13 07:53
c++构造函数后面的冒号
初始化列表,跟在{}里面的初始化没有什么不同,但在非静态const类型以及引用型成员变量必须在初始化列表里面初始化,不能在{}里面初始化.A(b)就是用父类的构造函数进行一部分初始化.
--------------
很多的人对中构造函数寝初始化很多的困惑,对冒号后初始化不是太明白,总搞不清楚它们之间的区别,我想把我对这个问题的理解和看法和大家讨论讨论。
以上定义并初始化的形式是正确的,可以通过编译,但括号赋值只能在变量定义并初始化中,不能用在变量定义后再赋值,这是和赋值运算符赋值的不同之处,如:
(1)是可以用通过编译,定义一个变量a但并没有初始化,在需要变量a的时候,通过赋值运算符把10赋给a,而在(2)中,是通过括号把10赋值给b,但编译系统认为
这是一个函数的调用,函数名为b,10为实际参数,所以编译错误。因此,括号赋值只用在定义变量并初始化中。
在Student类中有两个数据成员,一个是常量数据成员,一个是引用数据成员,并且在构造函数中初始化了这两个数据成员,但是这并不能通过编译,因为常量初始化时必须赋值,它的值是不能再改变的,与常量一样引用初始化也需要赋值,定义了引用后,它就和引用的目标维系在了一起,也是不能再被赋值的。所以C ++":"后初始化的机制,使引用和常量数据成员变为可能的,Student类的构造函数应为:
在下面的程序:
在上面的程序中通不过编译,编译系统会告诉你teacher这个类对象缺默认构造函数,因为在teach 类中没有定义默认的构造函数。那么带参数的构造函数怎么进行构造呢?通过我们前面提到的冒号赋值。那它的构造函数应该是:
就是说在没有默认构造函数的时候,如果一个类对象是另一个类的数据成员,那么初始化这个数据成员,就应该放到冒号后面。这样可以带参数。在类的定义中,如:
类对象是不能带参数的,因为它只是声明。
- C++构造函数中的初始化:C++构造函数后面的冒号
- C++构造函数中的初始化:C++构造函数后面的冒号
- C++构造函数中的初始化:C++构造函数后面的冒号
- C++类构造函数初始化列表(构造函数后面的冒号)
- C++构造函数后面的冒号
- C++构造函数后面的冒号
- C++构造函数后面的冒号
- C++构造函数后面的冒号
- [C++]类成员冒号初始化以及构造函数内赋值
- C++构造函数中的初始化:冒号的使用
- 【C/C++】构造函数的初始化列表
- < C++ > initializer list 初始化列表(构造函数后面加个冒号的解释)
- c++ 构造函数后面加冒号
- C++ 构造函数后面的冒号的作用
- C++ 构造函数后面的冒号的作用
- C++之构造函数后面:冒号的作用
- (C++)构造函数初始化
- 冒号初始化以及构造函数内赋值
- C++ 构造函数后加冒号
- linux debian 下的 音频、视频测试工具 gxine(轻量级)
- 利用JDOM解析xml文件
- 基于XMPP的IOS聊天客户端程序(IOS端二)
- Uninstall Camfrog Video Chat with WindowsUninstaller.Org Removal Tips
- C++构造函数中的初始化:C++构造函数后面的冒号
- Extjs 打印
- 快捷方式创建
- configure脚本的输出
- linux 下基于jrtplib库的实时传送实现【转】
- PowerDesigner使用教程|使用方法
- Cache Manifest配置实例
- window server 2012 更改密钥 更改系统序列号
- Android音效SoundPool问题:soundpool 1 not retry