援用类型是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# 

我就是正文了两行,就是这么简略。