- C++对C语言有很多功能上扩展,大部分的扩展都是为了实现面向对象的机制
- 引用的概念
类型吗 & 引用名 = 某变量;
int n = 4;
int &r = n; //r引用了n,r的类型是 int &
某个变量的引用,等价于这个变量,相当于这个变量的一个别名,相当于两个是一回事了*
int n = 7;
int &r = n; //r引用了n;
r = 4;
cout <<r; //输出4
cout <<n; //输出4,因为r和n已经是一回事了
n = 5;
cout << r; //输出5,因为上一行代码对n进行了赋值
1.定义引用时一定要将其初始化成引用某个变量;2.初始化后,它就一直引用该变量,不会再引用别的变量了。【从一而终】;3.只能引用变量,不能引用常量和表达式
double a = 4,b = 5;
double & r1 = a; //r1引用了a
double & r2 = r1; //r2引用了r1,等同于r2也引用了a
r2 = 10;
cout << a <<endl; //10
r1 = b; //因为引用是从一而终,r1并没有在这里引用b,而是对r1进行了赋值操作
cout << a << endl; //5
- 引用应用的例子——值的交换
void swap(int a, int b){
int t;
t = a; a= b; b=t;
}
int n1,n2;
swap(n1,n2)
//n1,n2的值不会交换
void swap(int *a, int *b){
int t;
t = *a; *a= *b; *b=t;
}
int n1,n2;
swap(&n1,&n2)
//n1,n2的值会交换
//C++引用的利用
void swap(int & a, int & b){ //两个引用作为参数,a引用了n1,b引用了n2
int t;
t = a; a= b; b=t;
}
int n1,n2;
swap(n1,n2)
//n1,n2的值会交换
4.引用作为函数的返回值
int n =4;
int & SetValue(){return n;}
//这个函数的返回值类型是引用
int main(){
setValue()=40; //则可以对一个函数的返回结果进行赋值,因为类型是引用,引用了n,等价于等n进行赋值
cout<<n;//输出40
return 0;
}
5.常引用
定义引用时,前面加const关键字
int n;
const int & r = n; //r的类型是 const int &
r = 200; //编译出错
n = 300; //OK
不能通过常引用修改其引用的内容