C++ const引用详解
2011-10-16 15:53
405 查看
(1) 在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用。
(2) 一旦引用已经定义,它就不能再指向其他的对象.这就是为什么它要被初始化的原因。
(3) const引用可以用不同类型的对象初始化(只要能从一种类型转换到另一种类型即可),也可以是不可寻址的值,如文字常量。例如
编译器为了实现引用,必须生成一个临时对象,引用实际上指向该对象,但用户不能访问它。例如:
double dval = 23;
const int &ri = dval;
编译器将其转换为:
int tmp = dval; // double -> int
const int &ri = tmp;
这种自动转换仅针对const型引用,非const引用手动为其添加临时变量,例如:
int iv = 100;
int *&pir = &iv;//错误,非const引用对需要临时对象的引用
int *const &pir = &iv;//正确
(4)
地址值是不可寻址的值
int * &ref3 = &a; // 错误;
int * const &ref3 = &a; // 正确;
(5) const引用只保证不会通过此引用修改被引用对象的值,但可通过其它指针修改被引用对象的值
由此可以构建"类内部可读可写,而外部只能读的数据成员",例如
构造函数这样写
int ival = 1092; int &re = ival; //ok int &re2 = &ival; //错误 int *pi = &ival; int *&pi2 = pi; //ok
(2) 一旦引用已经定义,它就不能再指向其他的对象.这就是为什么它要被初始化的原因。
(3) const引用可以用不同类型的对象初始化(只要能从一种类型转换到另一种类型即可),也可以是不可寻址的值,如文字常量。例如
double dval = 3.14159; //下3行仅对const引用才是合法的 const int &ir = 1024; const int &ir2 = dval; const double &dr = dval + 1.0;
编译器为了实现引用,必须生成一个临时对象,引用实际上指向该对象,但用户不能访问它。例如:
double dval = 23;
const int &ri = dval;
编译器将其转换为:
int tmp = dval; // double -> int
const int &ri = tmp;
这种自动转换仅针对const型引用,非const引用手动为其添加临时变量,例如:
int iv = 100;
int *&pir = &iv;//错误,非const引用对需要临时对象的引用
int *const &pir = &iv;//正确
(4)
地址值是不可寻址的值
int * &ref3 = &a; // 错误;
int * const &ref3 = &a; // 正确;
(5) const引用只保证不会通过此引用修改被引用对象的值,但可通过其它指针修改被引用对象的值
由此可以构建"类内部可读可写,而外部只能读的数据成员",例如
public: const long& m_clReturnCode; const long& m_clErrorCode; private: long m_lReturnCode; long m_lErrorCode;
构造函数这样写
CLStatus::CLStatus(long lReturnCode, long lErrorCode) : m_clReturnCode(m_lReturnCode), m_clErrorCode(m_lErrorCode) { m_lReturnCode = lReturnCode; m_lErrorCode = lErrorCode; }
相关文章推荐
- C++ const引用详解
- C++ Const引用详解
- C++ const引用详解
- C++按值传参、按地址传参、按引用传参外加const比较详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++ const引用详解
- C++学习第一弹: const 指针 引用答疑
- C++ - const常量与指针和引用之间的关系
- C++ 值传递、指针传递、引用传递详解
- C++ - 指针的引用 详解 及 代码
- C++的const引用
- C++中的const和define详解
- C/C++中const关键字详解
- C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
- 在c++中const引用引发的几个小问题