援用类型是C++新减少的一个类型,也是十分体现C++特点的一个类型,始终晓得其是别名,但具体含意必须精确把握,能力精确的利用,其留神点如下:
1、定义:援用是已定义的变量的别名(另一个名称)
2、用处:援用变量的主要用途是用作函数的形参
3、应用注意事项:必须在申明援用时进行初始化(援用更靠近const指针,必须在创立时进行初始化,一旦与某个变量关联起来,就将始终效忠于它)
这三点记住,就能够说把握了援用的用法,哪一点不了解到位,应用过程中都报错。
比方第一点,定义,援用是已定义的变量的别名,其含意就是首先存在一个变量,这是前提条件,否则的话,编译就会报错,用一个例子展现一下:
1 #include <iostream> 2 #include <stdio.h> 3 4 int getMax(int &a, int &b) 5 { 6 int max; 7 if(a > b) 8 max = a; 9 else 10 max = b; 11 return max; 12 } 13 14 int main() 15 { 16 using namespace std; 17 int a1 = 2; 18 int b1 = 3; 19 int max = getMax(2, 3); 20 printf("max = %d\r\n", max); 21 int max = getMax(a1, b1); 22 printf("max = %d\r\n", max); 23 return 0; 24 }
是不是,看着下面的代码挺失常的,我一开始也是感觉这样的,间接隐形转化不就能够了,理论不是这样的,如果你这样想,编译就开始打你耳光了。
编译状况如下:
root@mkx:~/learn/quote# g++ quote.cpp -o quotequote.cpp: In function ‘int main()’:quote.cpp:19:24: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’ int max = getMax(2, 3); ^quote.cpp:4:5: note: initializing argument 1 of ‘int getMax(int&, int&)’ int getMax(int &a, int &b) ^root@mkx:~/learn/quote#
报错提醒了不能把rvale int间接给int&,其意思能够了解为,变量都不存在,何来援用呢?
代码改成这样就能够了:
1 #include <iostream> 2 #include <stdio.h> 3 4 int getMax(int &a, int &b) 5 { 6 int max; 7 if(a > b) 8 max = a; 9 else 10 max = b; 11 return max; 12 } 13 14 int main() 15 { 16 using namespace std; 17 int a1 = 2; 18 int b1 = 3; 19 //int max = getMax(2, 3); 20 //printf("max = %d\r\n", max); 21 int max = getMax(a1, b1); 22 printf("max = %d\r\n", max); 23 return 0; 24 }
看编译成果:
root@mkx:~/learn/quote# g++ quote.cpp -o quoteroot@mkx:~/learn/quote# ./quote max = 3root@mkx:~/learn/quote#
我就是正文了两行,就是这么简略。