乐趣区

关于c++:C的引用类型的掌握

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

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

退出移动版