const成员或者引用成员必须使用构造函数初始化列表的方式
#include<iostream.h> class A {const int a;int b; }; void main() {A obja; }编译出现如下错误:error C2512: 'A' : no appropriate default constructor available;如果将const去掉就没错了!
#include<iostream.h> class A { public:const int a;int b;A(int x):a(x){}}; void main() {A obja(2);cout<<obja.a<<endl;cout<<obja.b<<endl;//不会自动初始化的 } 构造函数的初始化方式有两种方式1》在构造函数的体内用赋值语句的方式。2》用构造函数初始化列表的方式。需要注意的是,初始化列表的执行先于构造函数体的执行。并且,一些特殊成员,比如常量成员和引用成员,都必须在初始化列表中进行初始化。这就说明了一旦一个类中有const成员或者引用成员,这就不能使用缺省的构造函数。必须使用用户自定义的构造函数进行初始化;而且使用表达式的方式进行初始化。
#include<iostream.h> class A { public:int &a;int b; //a是b的引用A():b(9),a(b){}//引用和const成员一样,必须使用这种形式。 }; void main() { A obja;cout<<obja.a<<endl; }
#include<iostream.h> class A { public:const int a;A(int x):a(x){} }; class B:public A{ public:B(int x):A(x){} }; void main() {A obja(2);B objb(3);cout<<obja.a<<endl;cout<<objb.a<<endl; }
转载于:https://www.cnblogs.com/leijiangtao/p/4488988.html
const成员或者引用成员必须使用构造函数初始化列表的方式相关推荐
- 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数
首先回忆下,以前学的const 单独使用const修饰变量时,是定义的常量,比如:const int i=1; 使用volatile const修饰变量时,定义的是只读变量 使用const & ...
- c++初始化成员列表_C++ 类构造函数初始化列表
关注我们更多精彩等你发现! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: 上面的例子中两个构造函数的结果是一样的.上面的构造函数 ...
- C++类构造函数初始化列表及初始化成员变量的误区
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...
- C++ 类构造函数初始化列表介绍
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式. 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个 ...
- C++类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: int a; f ...
- C++ 构造函数初始化列表
<C++ Primer>中提到在以下三种情况下需要使用构造函数初始化列表: 需要初始化的类的成员变量是对象的情况: 需要初始化的类的成员变量由const修饰的或初始化的类的引用成员变量: ...
- c++的构造函数初始化列表
C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: in ...
- C++构造函数初始化列表与赋值
C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化 ...
- C++构造函数初始化列表与构造函数中的赋值的区别
转载 C++构造函数初始化列表与构造函数中的赋值的区别 2016-12-10 15:16:51 xingpacer 阅读数 10391更多 分类专栏: C++相关 查看全文 http://www.ta ...
最新文章
- python 读取音频文件(mp3,wav)时间的两种方法
- python3.7安装turtle步骤-Python3.6安装turtle模块
- 南农计算机考研985,江浙沪985/211考研难度梯队排名
- django中遇到的错误并解决
- YAML_01 YAML语法和playbook写法
- 记录解决Mac系统升级后三指取词、词典失效问题的过程
- Python数学建模入门【1】
- python爬取微博数据代码_Python selenium爬取微博数据代码实例
- 基于74hc573的数码管模块测试
- vCenter Server 6.x在同站中重新指向新外部 PSC
- 正则表达网络三剑客之sed
- 文件服务器 excle 变为temp,WPS的excel表格保存之后变成tmp_共享文档无法保存EXCLE 生成TMP...
- 严昊:25岁接手世界500强企业,公司一年净赚80亿
- 升级Android Q之路遇到的坑-abc_screen_simple
- 凝思系统机器名怎么查看_凝思操作系统Custom Linx安装教程
- 校园网dns服务器可以自动么,校园网应有自己的DNS服务
- 解读《欧洲新工业战略》:三个愿景与三大策略
- 从旧金山到瑞典的开发者的福利
- OSChina 周日乱弹 —— 木兰,其实我喜欢你很久了
- android扫码支付宝ofo,六大共享单车接入支付宝 ofo 等免押金扫一扫可骑走
热门文章
- python入门教程共四本书籍-Python入门书籍有哪些?
- 0基础学python看什么书-零基础学python编程需要看什么书?
- python快速入门答案-总算懂得python脚本快速入门教程
- python快速编程入门教程-终于懂得python快速编程入门教程
- python读取大文件-使用Python读取大文件的方法
- python3语法错误-使用Python 3打印时出现语法错误
- python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点
- python语言能做什么软件-python语言能做什么?
- python爬虫流程-小白必看的Python爬虫流程
- 自学python转行-转行学习python 需要多久?应该如何学习?