成员初始化列表 const 和引用
来源:互联网 发布:js date 格式化 编辑:程序博客网 时间:2024/05/07 13:20
template<class t>
class namedptr {
public:
namedptr(const string& initname, t *initptr);
...
private:
const string name;
t * const ptr;
};
这个类的定义要求使用一个成员初始化列表,因为const成员只能被初始化,不能被赋值。
如果namedptr<t>对象包含一个现有名字的引用,情况会非常不同。但还是要在构造函数的初始化列表里对引用进行初始化。还可以对名字同时声明const和引用,这样就生成了一个其名字成员在类外可以被修改而在内部是只读的对象。
template<class t>
class namedptr {
public:
namedptr(const string& initname, t *initptr);
...
private:
const string& name; // 必须通过成员初始化列表
// 进行初始化
t * const ptr; // 必须通过成员初始化列表
// 进行初始化
};
通过成员初始化列表来进行初始化总是合法的,效率也决不低于在构造函数体内赋值,它只会更高效。另外,它简化了对类的维护。
---------------------------------------
但有一种情况下,对类的数据成员用赋值比用初始化更合理。这就是当有大量的固定类型的数据成员要在每个构造函数里以相同的方式初始化的时候。
void manydatambrs::init()
{
a = b = c = d = e = f = g = h = 1;
i = j = k = l = m = 0;
}
manydatambrs::manydatambrs()
{
init();
...
}
- 成员初始化列表 const 和引用
- 九、构造函数和析构函数(三) 初始化列表、对象成员初始化、const,引用成员初始化
- C++类中引用成员和常量成员的初始化(初始化列表)
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- const对象和const函数的用法限制以及对const成员变量或引用的初始化问题
- 普通引用和const引用的初始化
- 普通引用和const引用的初始化
- 普通引用和const引用的初始化
- C++类static静态成员变量和const常量成员变量(和引用相同)初始化方法
- C++的const和引用只能在初始化列表里初始化而不能在构造函数体内赋值初始化
- 为什么在非静态const类型以及引用型成员变量必须在初始化列表里面初始化,不能在{}里面初始化?
- const static 和 static 成员的初始化
- C++初始化成员列表,符合类,const修饰函数
- 类成员的初始化--成员初始化列表(常量,引用,成员对象)
- const类型参数的对象引用和const成员函数
- C++中的static成员、static const成员和const成员的初始化
- [转]初步了解 PHP V6 中的新特性
- ERP的管理思想
- Microsoft .NET Compact Framework 开发常见问题解答
- FAT32转换成NTFS
- ERP实施方法和流程
- 成员初始化列表 const 和引用
- @Override的用法
- 一起学MFC序
- 设置Visual Studio 2005和DirectX的关联
- 猪肉—他送——她拿—刀
- ToString()方法的介绍
- 类成员是按照它们在类里被声明的顺序进行初始化的,和它们在成员初始化列表中列出的顺序没一点关系
- VF6.0与C#的转移数据
- 2009端午节楠溪江徒步穿越溯源--集结号