常引用(const type&)的特性及引用的本质
2017-11-30 15:47
337 查看
常引用(const type&)的特性及引用的本质
#include "stdafx.h" #include <iostream> using namespace std; #if 0 ----常引用 const 引用有较多使用。它可以防止对象的值被随意修改。因而具有一些特性。 (1)const 对象的引用必须是 const 的,将普通引用绑定到 const 对象是不合法的。 既然对象是 const 的,表示不能被修改。引用当然也不能修改,必须使用 const 引用。 所以 const int a = 1; int &b = a; 这种写法是不合法的,编译通不过。 (2)const 引用可使用相关类型的对象(常量、非同类型的变量或表达式)初始化。 这个是 const 引用与普通引用最大的区别。const int &a = 2; 是合法的。 double a = 3.14; const int &b = a; 也是合法的 #endif struct T{int* p;}; struct TT{double &a;}; int _tmain(int argc, _TCHAR* argv[]) { double val = 3.14; double & ref2 = val;//正常使用 const int &ref = val; //新开辟了一个未命名的空间,以只读的方式引用 数值固定 不能更改 //也就是 ref是这个未命名空间的引用 储存的只是相应数值 与val再无任何关系 cout << ref << " " << ref2 <<"--"<<val<< endl; //3 3.14 val = 4.14; //val改变不会影响到未命名空间的值 cout << ref << " " << ref2 <<"--"<<val<< endl; //3 4.14 cout << sizeof(T) << endl;//4 cout << sizeof(TT) << endl;// 大小也为4 引用的本质就是指针 int a; int &ra = a; ra = 200;//ra可以改变数据 int b; //&ra = b; ra不能再次指向另一个变量 //所以引用的本质是常指针类型 type* const p //之所以const只修饰p代表 它所指向的地址是固定的 //而*p也就是代表着内容(变量的值)是可以更改的 //这符合引用的性质 //引用的本质是,是对常指针 type * const p 的再次包装。 return 0; }
相关文章推荐
- C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type
- Pointer to non-const type 'PLTexture*'with no explicit ownership错误,解决办法
- C++ 常引用 const int &a 的作用和区别
- C++中引用&、const的用法
- 指针与引用的初始化&顶层底层const变量初始化问题
- 参数的常量引用const int &a和引用 int &a的区别
- invalid initialization of non-const reference of type ‘xxx&’ from an rvalue of type ‘xxx’
- C++引用报错:invalid initialization of non-const reference of type ‘std::string&’ from an rvalue of type
- [C++基础]020_C++0x新特性之右值引用(int&& value)
- 此诊断出现在编译器生成的函数“CList<TYPE,ARG_TYPE> &CList<TYPE,ARG_TYPE>::operator =(const CList<TYPE,ARG_TYPE> &)”
- 拷贝构造函数的形参为何应该是const Type& src
- invalid initialization of non-const reference of type ‘int*&’ from a temporary of type ‘int*’
- 引用 && const 要注意的一些地方
- 编译错误:error: invalid initialization of non-const reference of type ‘*&’ from a temporary of type
- 不能将this指针从“const type" 转换为"type &"
- initialization discards 'const' qualifier from pointer target type
- 解决 sending 'const NSString *' to parameter of type 'NSString *' discards qualifiers
- 常引用,const CString&,引用的效率
- 引用&指针和引用&const的关系
- 常引用,const CString&,引用的效率