#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成员或者引用成员必须使用构造函数初始化列表的方式相关推荐

  1. 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数

    首先回忆下,以前学的const 单独使用const修饰变量时,是定义的常量,比如:const int i=1; 使用volatile const修饰变量时,定义的是只读变量 使用const & ...

  2. c++初始化成员列表_C++ 类构造函数初始化列表

    关注我们更多精彩等你发现! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: 上面的例子中两个构造函数的结果是一样的.上面的构造函数 ...

  3. C++类构造函数初始化列表及初始化成员变量的误区

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...

  4. C++ 类构造函数初始化列表介绍

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

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

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

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

    <C++ Primer>中提到在以下三种情况下需要使用构造函数初始化列表: 需要初始化的类的成员变量是对象的情况: 需要初始化的类的成员变量由const修饰的或初始化的类的引用成员变量: ...

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

    C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: in ...

  8. C++构造函数初始化列表与赋值

    C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化 ...

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

    转载 C++构造函数初始化列表与构造函数中的赋值的区别 2016-12-10 15:16:51 xingpacer 阅读数 10391更多 分类专栏: C++相关 查看全文 http://www.ta ...

最新文章

  1. python 读取音频文件(mp3,wav)时间的两种方法
  2. python3.7安装turtle步骤-Python3.6安装turtle模块
  3. 南农计算机考研985,江浙沪985/211考研难度梯队排名
  4. django中遇到的错误并解决
  5. YAML_01 YAML语法和playbook写法
  6. 记录解决Mac系统升级后三指取词、词典失效问题的过程
  7. Python数学建模入门【1】
  8. python爬取微博数据代码_Python selenium爬取微博数据代码实例
  9. 基于74hc573的数码管模块测试
  10. vCenter Server 6.x在同站中重新指向新外部 PSC
  11. 正则表达网络三剑客之sed
  12. 文件服务器 excle 变为temp,WPS的excel表格保存之后变成tmp_共享文档无法保存EXCLE 生成TMP...
  13. 严昊:25岁接手世界500强企业,公司一年净赚80亿
  14. 升级Android Q之路遇到的坑-abc_screen_simple
  15. 凝思系统机器名怎么查看_凝思操作系统Custom Linx安装教程
  16. 校园网dns服务器可以自动么,校园网应有自己的DNS服务
  17. 解读《欧洲新工业战略》:三个愿景与三大策略
  18. 从旧金山到瑞典的开发者的福利
  19. OSChina 周日乱弹 —— 木兰,其实我喜欢你很久了
  20. android扫码支付宝ofo,六大共享单车接入支付宝 ofo 等免押金扫一扫可骑走

热门文章

  1. python入门教程共四本书籍-Python入门书籍有哪些?
  2. 0基础学python看什么书-零基础学python编程需要看什么书?
  3. python快速入门答案-总算懂得python脚本快速入门教程
  4. python快速编程入门教程-终于懂得python快速编程入门教程
  5. python读取大文件-使用Python读取大文件的方法
  6. python3语法错误-使用Python 3打印时出现语法错误
  7. python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点
  8. python语言能做什么软件-python语言能做什么?
  9. python爬虫流程-小白必看的Python爬虫流程
  10. 自学python转行-转行学习python 需要多久?应该如何学习?