如果一个类是这样定义的:

Class A
{
public:
A(int pram1, int pram2, int pram3);
privite:
int a;
int &b;
const int c;
}

假如在构造函数中对三个私有变量进行赋值则通常会这样写:

A::A(int pram1, int pram2, int pram3)
{
a=pram1;
b=pram2;
c=pram3;
}

但是,这样是编译不过的。因为常量和引用初始化必须赋值。所以上面的构造函数的写法只是简单的赋值,并不是初始化。

正确写法应该是:

A::A(int pram1, int pram2, int pram3):b(pram2),c(pram3)
{
a=pram1;
}

采用初始化列表实现了对常量和引用的初始化。采用括号赋值的方法,括号赋值只能用在变量的初始化而不能用在定义之后的赋值。

凡是有引用类型的成员变量或者常量类型的变量的类,不能有缺省构造函数。默认构造函数没有对引用成员提供默认的初始化机制,也因此造成引用未初始化的编译错误。并且必须使用初始化列表进行初始化const对象、引用对象。

最新文章

  1. Android成长日记-APP的签名和打包
  2. 自己签发免费ssl证书
  3. hashmap的hash算法( 转)
  4. android Camera 中如何修改缩放变焦参数
  5. Linux中的两种守护进程stand alone和xinetd
  6. BZOJ_1019_[SHOI2008]_汉诺塔_(DP)
  7. 【原创】MIPS浅议之——中断系统之我见
  8. UVA 1329 - Corporative Network
  9. PHP面向对象(OOP):__set(),__get(),__isset(),__unset()四个方法的应用
  10. qt运行库
  11. HDU2586 How far away ?(LCA模板题)
  12. [Codeforces 864A]Fair Game
  13. 18、实现strStr()
  14. webpack 安装 打包
  15. (二)获取Access_token
  16. oozie调度sqoop Job 数据库密码无法保存
  17. 【Git】 GitLab简单使用
  18. Druid加密
  19. ES Route
  20. 杭电1518 Square(构成正方形) 搜索

热门文章

  1. BZOJ 3597 SCOI2014 方伯伯送椰子 网络流分析+SPFA
  2. DFS(5)——hdu1728逃离迷宫
  3. libevent显式调用事件处理
  4. hadoop自定义数据类型
  5. 【EasyNetQ】- 快速开始
  6. Flink State的两张图
  7. oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列
  8. [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
  9. 一些比较高效的CSS写法建议
  10. centos安装net-speeder