`
yshlin
  • 浏览: 61099 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C++下的引用类型(C++入门)

    博客分类:
  • c++
阅读更多

引用类型也称别名,它是个很有趣的东西。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。 引用对象采用类型名加上&符号和名称的方式进行定义。例如:(int &s;),这里我们就定义了一个int类型的名为s 的引用,但是int &s;这样的方式是不能够被编译成功的,因为引用的定义必须同时给应用进行赋值操作,这里的赋值并不是说把变量的值传递给引用,而是把引用指向变量,写成这样就对了:(int &s=变量名;)。

#include <iostream>  
using namespace std;  
  
void main(void)  
{  
  
int a=10;  
int &s=a;  
s=s+2;  
  
cout << &a << "|" << &s << "|" << a << "|" <<s<< endl;  
  
cin.get();  
} 

 
  观察并编译运行上面的代码你会发现&a和&s的地址显示是相同的,a和s的值显示也是一样的!
  结合前一个教程的内容我们来说一下const引用的相关内容,这里要特别注意,和前一个教程一样带const修饰的引用同样也容易混淆概念!

  const修饰如果用在引用上会有一个特别之处,它的奥妙就在于可以进行不同类型的对象的初始化,而这一切在普通变量操作上是不可能的下面我们来看一个例子:

#include <iostream>  

using namespace std;  

void main(void)  

{  

int a=10;  

//double &s = a + 1.2f; //这句就是错误的!  

const double &s = a + 1.2f;  

cout << &a << "|" << &s << "|" << a << "|" <<s << endl;  

cin.get();  

}

 
  上面的代码足够说明问题了,这就是const修饰带来的好处,但是聪明的人会在输出的时候发现一个问题,就是a和s的值的输出不同,按照最先说的道理应该可以改变a的值呀,为什么在这里却有没有能够改变呢?

  道理是这样的,const修饰过后的引用在编译器内部是这样进行变化的。

int a=10;  
const double &s= a + 1.2f;


  这样的一段代码在编译器认为却是下面的方式进行的

int a=10;  
int temp = a;  
const double &s = temp + 12.f


  这里其实是把a的值赋给了一个临时temp 变量,而后test获得的却是temp+12.f 改变的是temp而不是a,所以就出现了a和s显示的值不同的情况,这里要特别注意,这是一个很容易混淆的地方,在编写程序的时候要特别仔细,以免出现了问题却检查不出为什么!

分享到:
评论

相关推荐

    C++语言的入门教程---21天学通C++

    其中,第一篇是C++数据表达篇,主要内容包括:C++入门、变量和数据类型、运算符和表达式以及程序控制结构等;第二篇是C++面向过程设计篇,包括函数、编译预处理、数组、指针和构造数据类型等内容;第三篇是C++面向...

    新手学习C++入门资料

    有些情况下强制转换是禁用的,例如不能把一个结构类型转换成其他任何类型。数字类型和数字类型、指针和指针之间可以相互转换。当然,数字类型和指针类型也可以相互转换,但通常认为这样做是不安全而且也是没必要的。...

    鸡啄米:C++编程入门系列

    鸡啄米:C++编程入门系列之二十三(C++程序设计必知:常引用、常对 象和对象的常成员) 鸡啄米:C++编程入门系列之二十四(C++程序设计必知:多文件结构和 编译预处理命令) 第六部分:数组、指针和字符串 鸡...

    c++算法入门学习

    c++条件下写的常见的应用算法学习代码,引用于leetcode

    c++引用的例子

    c++引用的事例,适合c++入门以及从事多年参考

    21天学通c++ 一本不错的学习教程

    其中,第一篇是C++数据表达篇,主要内容包括:C++入门、变量和数据类型、运算符和表达式以及程序控制结构等;第二篇是C++面向过程设计篇,包括函数、编译预处理、数组、指针和构造数据类型等内容;第三篇是C++面向...

    C++入门指南-v2.4.pdf

    这是DS小龙哥编写整理的C++入门指南PDF文档,适合C++初学者,C语言转C++工程师当做入门工具书学习。PDF里有完整示例、知识讲解,平时开发都可以复制粘贴,非常便捷。 目前一共写了7章,后续会持续更新资源包,更新后...

    c++编程学习及快速入门

    内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚函数、模板和包容器...

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

    在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。 引用对象采用类型名加上&符号和名称的方式...

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++...

    Visual C++ 2005入门经典.part04.rar (整理并添加所有书签)

    Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++...

    类、引用、重载等c++入门练习代码

    类、引用、重载等c++入门练习代码

    C++入门到精通

    complex vector 类数据类型 这些类型构成了所有程序的基石 第 4 章详细讨论了 C++语言 支持的表达式 比如算术 关系 赋值表达式 语句是 C++程序中最小的独立单元 它是第 5章的主题 C++标准库提供的容器类型是第 6 ...

    Visual C++ 2005入门经典.part05.rar (整理并添加所有书签)

    Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++...

    21天学通Visual C++(第2版)

    其中,第1篇是C++数据表达篇,包括C++入门、变量和数据类型、运算符和表达式以及程序控制结构等;第2篇是C++面向过程设计篇,包括函数、编译预处理、数组、指针和构造数据类型等内容;第3篇是C++面向对象编程篇,...

    C++资源——课件及其入门等---一本书--引用的使用

    C++资源——课件及其入门等---一本书--引用的使用

    《由浅入深学C++-基础、进阶与必做300题》pdf格式 (完整版 带目录

    本书循序渐进地讲述了C++的基础知识、C++程序的组成及其开发过程、C++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、...

    21天学通c++

    其中,第1篇是c++数据表达篇,包括c++入门、变量和数据类型、运算符和表达式以及程序控制结构等;第2篇是c++面向过程设计篇,包括函数、编译预处理、数组、指针和构造数据类型等内容;第3篇是c++面向对象编程篇,...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新,介绍了最新的开发环境和如何使用visual c++构建现实世界中的应用程序。拥有本书,您就迈向了通往使用两种c++版本编写应用程序的成功之路...

Global site tag (gtag.js) - Google Analytics