const 一些知识
C++ primer 上是说 “术语:const 引用是指向 const 的引用” 但是接下来又有这样的例子: 观察将引用绑定到不同的类型时所发生的事情,最容易理解上述行为。假如我们编写 double dval = 3.14; const int &ri = dval; 编译器会把这些代码转换成如以下形式的编码: int temp = dval; const int &ri = temp; // bind ri to that temporary 这里的temp并不是const对象啊,请高手解释。。不胜感激
其实这种转换对理解const并没有任何用处,转换的实质只是将一个浮点型转换为一个整型. 引用可理解为别名,上面的两行代码的意思就是将ri作为dval的别名,官方的说法是ri是对变量dval的引用.
const只是一个修饰符,它告诉编译器用它修饰的变量是一个常量,不允许再修改它.这种初始化的右值
非const对象既可以用于初始化const引用,也可以用于初始化非const引用。但是,将const引用初始化为非const对象,需要通过转换来实现,而非const形参的初始化则是精确匹配。
1 #include <iostream>
2 using namespace std;
3 void fun(int& );//这是两个函数重载
4 void fun(const int& );
5 int main()
6 {
7 int a=0;
8 const int& b=a;//非const也可以用来给const引用初始化
9 const int aa=0;
10 const int& bb=aa;//此处则是const变量还初始化const引用
11 fun(b);
12 const int m=9;
13 fun(m);
14 int c;
15 int& d=c;
16 fun(d);
17 fun(c);
18 fun(9);
19 return 0;
20 }
21 void fun(int& ){cout<<"111"<<endl;}
22 void fun(const int& ){cout<<"222"<<endl;}