C++类中引用成员和常量成员的初始化(初始化列表)
2024-08-24 14:16:50
如果一个类是这样定义的:
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对象、引用对象。
最新文章
- Android成长日记-APP的签名和打包
- 自己签发免费ssl证书
- hashmap的hash算法( 转)
- android Camera 中如何修改缩放变焦参数
- Linux中的两种守护进程stand alone和xinetd
- BZOJ_1019_[SHOI2008]_汉诺塔_(DP)
- 【原创】MIPS浅议之——中断系统之我见
- UVA 1329 - Corporative Network
- PHP面向对象(OOP):__set(),__get(),__isset(),__unset()四个方法的应用
- qt运行库
- HDU2586 How far away ?(LCA模板题)
- [Codeforces 864A]Fair Game
- 18、实现strStr()
- webpack 安装 打包
- (二)获取Access_token
- oozie调度sqoop Job 数据库密码无法保存
- 【Git】 GitLab简单使用
- Druid加密
- ES Route
- 杭电1518 Square(构成正方形) 搜索