源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

新手入门:C++下的引用类型

  • 时间:2021-08-29 10:23 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:新手入门:C++下的引用类型
引用类型也称别名,它是个很有趣的东西。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。   引用对象采用类型名加上&符号和名称的方式进行定义。例如:(int &test;),这里我们就定义了一个int类型的名为test 的引用,但是int &test;这样的方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &test=变量名;)。 #include <iostreamusing namespace std;  void main(void)  {  int a=10;  int &test=a;  test=test+2;  cout << &a << "|" << &test << "|" << a << "|" <<test << endl;  cin.get();  }   观察并编译运行上面的代码你会发现&a和&test的地址显示是相同的,a和test的值显示也是一样的!   结合[url=http://www.pconline.com.cn/pcedu/empolder/gj/c/0502/561142.html]前一个教程[/url]的内容我们来说一下const引用的相关内容,这里要特别注意,和前一个教程一样带const修饰的引用同样也容易混淆概念!   const修饰如果用在引用上会有一个特别之处,它的奥妙就在于可以进行不同类型的对象的初始化,而这一切在普通变量操作上是不可能的下面我们来看一个例子: #include <iostreamusing namespace std;  void main(void)  {  int a=10;  //double &test = a + 1.2f; //这句就是错误的!  const double &test = a + 1.2f;  cout << &a << "|" << &test << "|" << a << "|" <<test << endl;  cin.get();  }   上面的代码足够说明问题了,这就是const修饰带来的好处,但是聪明的人会在输出的时候发现一个问题,就是a和test的值的输出不同,按照最先说的道理应该可以改变a的值呀,为什么在这里却有没有能够改变呢?   道理是这样的,const修饰过后的引用在编译器内部是这样进行变化的。 int a=10;  const double &test = a + 1.2f;   这样的一段代码在编译器认为却是下面的方式进行的 int a=10;  int temp = a;  const double &test = temp + 12.f   这里其实是把a的值赋给了一个[b]临时[/b]temp 变量而后test获得的却是temp+12.f 改变的是temp而不是a,所以就出现了a和test显示的值不同的情况,这里要特别注意,这是一个很容易混淆的地方,在编写程序的时候要特别仔细,以免出现了问题却检查不出为什么
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部