援用类型是 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 quote
quote.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 quote
root@mkx:~/learn/quote# ./quote
max = 3
root@mkx:~/learn/quote#
我就是正文了两行,就是这么简略。