首页
学习
活动
专区
工具
TVP
发布

12.4 C++引用

C++对象引用C++中,常用常指针和引用作函数参数,既能保证数据安全,使数据不能被随意修改,在调用函数时又不必建立实参的拷贝。 用常指针和引用作函数参数,可以提高程序运行效率。...在C++中,如果变量名和引用名都指向同一段内存单元,形参为变量的引用名,实参为变量名,在调用函数进行虚实结合时,并不是为形参另外开辟一个存储空间,而是把实参变量的地址传给形参,这样引用名也指向实参变量。...C++对象引用举例 #include  using namespace std; class Time {   public:   Time(int,int);   int hour...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++学习路线    C++开发工具 VC6.0、Devc++、VS2019使用教程 100道C语言与...C++源码案例请去公众号:C语言入门到精通

49300

C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 引用 | 引用参数 | 引用 指针 对比 )

引用概念 ---- C++ 对 C 扩充 : 引用 ( Reference ) 概念 , 是 C++ 在 C 的基础上进行的扩充 , 在 C 语言中是没有引用的 ; 引用本质 : 引用的本质就是为一个变量指定一个别名...引用 ---- 引用 : ① 引用简介 : 引用本身是一个常量指针 , 指针本身的地址不可改变 , 引用 在常量指针的基础上 , 将指向的数据也设置成常量 , 即不能通过该引用修改变量的值 ;...( 引用代表的地址不能修改 , 引用引用的基础上 , 指向的数据也不能修改 ) ② 引用声明格式 : const 类型标识符 &引用别名 = 目标变量 ; ③ 示例代码 :...int a = 0; const int &b = a; ④ 等价说明 : 上述引用 b 等价于 const * int * b , 即该引用引用本身 , 以及其代表的变量 , 都不能通过该引用进行修改...语言中 , 如果要让函数的参数可以将结果返回 , 则必须使用指针作为参数 ; C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 ,

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 左值、右值与引用

代码编译运行环境:VS2017+Win32+Debug 文章目录 1.左值的定义 2.建立引用的条件 3.引用的特殊性质 参考文献 1.左值的定义 左值(Lvalue)是 C++ 中的一个基本概念,...否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在 C++ 中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...但要特别注意的是,将函数的参数声明为一般的引用还是声明为引用,是有讲究的。...3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...以上说明了无名临时变量具有常量性,只能建立引用

44820

认识左值与引用

否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在C++语言中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...---- 3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...同样,之所以允许Max(i,5.5)这样的函数调用,也是因为函数Max()的第二个参数是引用,因此可以将实参5.5先转换为int类型的无名变量,然后再建立对该无名变量的引用。...以上说明了无名临时对象具有常量性,不能作为左值,因此只能建立引用。但是,是不是所有类型的的无名临时对象都具有常量性,不能作为左值,只能建立引用呢?...临时变量作为非const的引用进行参数传递引发的编译错误 ---- 参考文献 [1] C++高级进阶教程.陈刚.武汉大学出版社

52620

C++】类和对象之引用与运算符重载

前言 在之前的文章中提到了引用,再来看运算符重载之前,先来看看引用的使用。 2....引用 在使用引用的时候可能会出现一些问题,例如:b是a的别名,b++,那么a肯定也加加了,但有时我们也不希望这样。 如果不希望a传过去改变,那么就得加上const。...那么这里就能使用const加引用。 这里用到引用c是a的别名,但是不能修改,也就是不能通过c修改a。他是一种权限的缩小 。 这里要给x取别名,是不可以的。...下面的引用也是一样的,是把d拷贝给临时变量,ri是这个临时变量的别名,因为临时变量具有常性,所以用引用。 那么为什么要产生临时变量呢? 这里i和ch比较为什么会相等?...运算符重载 C++为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。

8610

左值、右值与引用

否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在C++语言中,经常把函数的参数声明为引用,这样在发生函数调用时可以减少运行时的开销。...但要特别注意的是,将函数的参数声明为一般的引用还是声明为引用,是有讲究的。...3.引用的特殊性质 对某个变量(或表达式)建立引用时,允许发生类型转换,而一般的引用则不允许,见下面的程序。...同样,之所以允许Max(i,5.5)这样的函数调用,也是因为函数Max()的第二个参数是引用,因此可以将实参5.5先转换为int类型的无名变量,然后再建立对该无名变量的引用。...以上说明了无名临时变量具有常量性,只能建立引用

1.1K10

C++】类与对象(构造函数、析构函数、拷贝构造函数、引用

今日更新了类与对象的构造函数、析构函数、拷贝构造函数、引用的内容 欢迎大家关注点赞收藏⭐️留言 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。...C++规定自定义的类型都会调用拷贝构造。 注意:拷贝构造时要传引用,不能传值。如果传值,根据C++规定,会调用拷贝构造,这样就会无穷递归下去,发生错误。...引用 b是a的别名,修改b时,a也会跟着改变。如果传参时想要改变外面的,就要传引用,但如果不想改变外面的,就需要用const引用。const引用是别名但是不能修改,即权限的缩小。...a是可读可写的,而c只是可读的。 x是只可读,而y是可读可写的,不能放大权限。解决方法是在int& y前面加上const。 10是常量,z要用引用。...a+x的表达式返回值是临时对象,临时对象具有常性,也要用引用。 如果我们只是想传值过去,建议用const引用。因为如果直接用引用,我们将不能直接传常量过去。

9410

引用 C C++

引用 引用是一个别名,它的作用就是作为目标的别名而使用,对这个引用的改动,就是对目标的改动。...定义 例如引用一个整型变量: int a=666; int &ra=a; 引用运算符&与地址操作符使用相同的符号,虽然它们显然是彼此相关的,但它们又是不一样的。...和指针类似,下面的引用定义是等价的: int& ra=a; int &ra=a; int & ra=a; 引用必须在定义的时候就进行初始化。而且必须在申明引用之前其引用的目标已经有申明或定义。...引用是不占内存空间的,它就是一个别名而已。 不能引用数组。 那它有什么用处呢? 应用 经常用来传递函数参数。 我们说如果要写一个函数交换两个变量的值,首先可以用指针,此外就是用我们的引用。...int a=1,b=2; swap(a,b); printf("%d %d",a,b); } 另外,因为函数只能返回一个值,所以如果想函数返回多个值的话,一种方法就是返回一个结构体,还有就是用引用传递参数

8330

C++】C++ 引用详解 ⑩ ( 常量引用案例 )

C++ 语言中 , 常量引用引用类型 的一种 ; 借助 常量引用 , 可以将一个变量引用 作为实参 传递给一个函数形参 , 同时保证该值不会在函数内部被修改 ; 这样既保证了参数传递效率 ,...; 2、引用语法示例 常量引用示例 : 下面的代码 , 就是上述 使用 普通变量 初始化 常量引用 : // 定义变量 a int a = 10; // 定义变量 a 的 常量引用 b const...========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 正确代码示例 : // 包含 C++ 头文件 #include "iostream" //...使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; // 导入 C 头文件 #include // 常量引用作为函数参数.../ 导入 C 头文件 #include // 定义一个结构体类型, 之后使用该类型的常量引用进行测试 struct Student { char name[64]; int age

16230

C++_引用

引用 引用的特性: 引用在定义时就要初始化 一个变量可以被多个引用 一个引用只能由一个实体变量,不能引用多个 引用不能降低实体的可执行权限,只能提升或者不变 比如在引用常量的时候,常量只有可读权限,没有写权限...,因此在定义引用的时候必须要用const来定义出常量引用 const int a = 10; int &b = a;//错误 const int &c = a;//正确 int d; int &e =...void Add(int a, int b, int &c) { a += a; b += b; c = a + b; } int main() { int a, b;...tem是n的引用,则通过返回值访问n的时候就是非法访问 所以C++的规定是: 离开函数作用域之后,如果返回值的内存还没有被释放(比如返回值类型是静态变量全局变量之类),则可以使用引用返回,否则必须使用传值返回...引用在定义时必须初始化,指针没有要求 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型 实体 没有NULL引用,但有NULL指针 在sizeof中含义不同:引用结果为引用类型的大小

25230

C++】C++ 引用详解 ⑦ ( 指针的引用 )

changePointer(int **ptr) { int new_value = 10; *ptr = &new_value; // 修改指针值 } 传递多维数组 : C...C++ 语言 中 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为 一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 和 取值符号 * ; 指针的引用 就相当于 二级指针..., 其 实现的效果 , 等同于 二级指针 ; C++ 编译器 遇到 指针的引用 时 , 会自动将 引用指针 转为 二级指针 ; 2、引用本质 - 函数间接赋值简化版本 使用函数进行间接赋值 , 需要满足如下三个条件...类型 , 也能达到 间接赋值 的效果 ; 引用 实际上是 把 间接赋值 的三个条件的后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用 还原为 C 语言中的 取地址 传入函数 ,...【C++】C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数的作用 ) 中的 int getStudent(Student** stu) 函数 ; // 参数是 一级指针的引用

24220

C++】C++ 引用详解 ⑧ ( 普通引用与常量引用 | 常量引用概念与语法 )

一、普通引用 1、概念说明 之前的 【C++】C++ 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过程如下 : 先定义 普通变量 a , 然后定义...普通引用代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace...: error C3892: “b”: 不能给常量赋值 2、常量引用概念与语法 在 C++ 语言中 , " 常量引用 " , 英文名称为 Const Reference , 是一种引用类型 , 另外一种引用就是...常量引用 b 修改 变量 a 的值 , 则会报错 : error C3892: “b”: 不能给常量赋值 错误代码示例 : // 包含 C++ 头文件 #include "iostream" //...d\n", b); // 修改 常量引用 b 的值 // 报错 : error C3892: “b”: 不能给常量赋值 b = 20; // 控制台暂停 , 按任意键继续向后执行 system

17610

c++ 引用

目录 2.1引用的基本使用 引用的基本语法 2.2引用注意事项 1,引用必须要初始化 2,引用一旦初始化后,就不可以更改了 2.3 引用作函数的参数 1,值传递 2,地址传递 3,引用传递 2.4引用做函数返回值...1,不要返回局部变量的引用 2,函数的调用可以作为左值 2.5引用的本质 2.6常量引用 ---- 2.1引用的基本使用 引用的基本语法 例:  int &a=b;   2.2引用注意事项 1...,引用必须要初始化 也就是给一个值. 2,引用一旦初始化后,就不可以更改了 不能把别名换成另一个的别名 2.3 引用作函数的参数 1,值传递 其中a和b的值并没有改变....前面的两个形参改变了值. 2,地址传递 3,引用传递 引用传递和地址传递的效果一样 2.4引用做函数返回值 1,不要返回局部变量的引用 不要返回局部变量的引用 2,函数的调用可以作为左值...2.6常量引用 const后无法修改实参

32260

C++】引用

文章目录 1.引用概念 2.引用特性 3.使用场景 4.值和引用作为返回值类型 5.传值、传引用做参数 6.引用 7.引用和指针的区别 总结 1.引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名...对于引用的特性而言,我们还是能够很好去理解的。 ---- 对于C++指针和引用而言,是相辅相成的。...实际上,不管构不构成,调用时都会产生歧义 ---- 6.引用 这里用const修饰的变量,不能直接去进行引用,在指针和引用赋值中,权限可以缩小,但是不能放大。...关于引用的用处: 一般用引用做参数时都是用const修饰引用。...好的,到了这里,我们对于引用有了一定的了解,接着往下走 除此之外,我们知道,在类型转化的时候会产生一个临时变量,而这个临时变量具有常性,所以引用的时候一定要记得加上const,我们来举个例子你就明白什么意思了

52220

C++引用

C++重点——引用 定义 特性 引用 使用场景 做参数 做返回值 传值、传引用效率比较 引用和指针的区别 定义 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间...比如说,你叫A,你的家人给你起小名叫B,你的兄弟姐妹叫你C,恋人叫你D。 其实这些名字都是你自己本人,只不过是不同的称呼而已。...注意:引用类型必须和引用实体是同种类型的。 特性 引用在定义时必须初始化 一个变量可以有多个引用 引用一旦引用一个实体,再不能引用其他实体 这里编译器报错说没有初始化。...引用 #include int main() { const int a = 10;//a是常量 int& ra = a;//a是常量不可以被改变,这里引用等于ra可以被改变也就等于...a也可以被改变,是不可以的 int& b = 10;//同上,10是一个不可被修改的常量 const int& c = 10;//这样c就是常量了 int x = 10;//这里的x可以更改 const

29600

12.2 C++对象成员

C++对象成员 在C++中,可以将对象的成员声明为const,包括常数据成员和成员函数 C++常数据成员  常数据成员的作用与一般变量相似,用关键字const来声明常数据成员。...对象的数据成员都是常数据成员,因此对象的构造函数只能用参数初始化表对常数据成员进行初始化。...C++成员函数  一般的成员函数可以引用本类中的非cons数据成员,也可以修改它们,如果将成员函数声明为成员函数,则只能引用本类中的数据成员,不能修改它们。...成员函数可以引用cons数据成员,也可以引用非const的数据成员;const数据成员可以被const成员函数引用,也可以被非const的成员函数引用。...C++对象成员注意事项 如果在一个类中,有些数据成员的值允许改变,另一些数据成员的值不允许改变,则可以将一部分数据成员声明为const,以保证其值不被改变。

50510

C++初阶】引用

二.引用特性 1.引用类型必须和引用实体是同种类型的; 2.引用在定义时必须初始化; 3....一个变量可以有多个引用; 4.引用只能有一个实体,它和指针不同,指针能够改变指向,而引用不能。....做输出型参数(输出型参数就是形参的改变会改变实参,输入型参数相反); 2.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用); 举一个典型的例子,C语言阶段我们都写过交换函数,当时是用的指针实现...四.引用和指针的区别 在C++中引用可已用来代替指针实现一些功能,但C++并没用完全抛弃指针,有的功能就必须要用指针,所以C++的引用不能完全代替指针; 实际上,引用的底层使用指针实现的,所以实际上引用是开空间的...引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小; 7. 有多级指针,但是没有多级引用; 8. 访问实体方式不同,指针需要显式解引用引用编译器自己处理; 9.

7310
领券