首页
学习
活动
专区
工具
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语言入门到精通

52100

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

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

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

    C++ 左值、右值与引用

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

    48820

    认识左值与引用

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

    57320

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

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

    12510

    左值、右值与引用

    否则,只能另外创建一个无名变量,该变量中存放非左值表达式的运算结果,然后再建立对该无名变量的引用。 在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引用。因为如果直接用引用,我们将不能直接传常量过去。

    16710

    引用 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); } 另外,因为函数只能返回一个值,所以如果想函数返回多个值的话,一种方法就是返回一个结构体,还有就是用引用传递参数

    10930

    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中含义不同:引用结果为引用类型的大小

    27930

    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

    25030

    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) 函数 ; // 参数是 一级指针的引用

    35820

    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

    30710

    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

    32400

    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后无法修改实参

    34760

    C++】引用

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

    56720

    12.2 C++对象成员

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

    54610

    C++_ ‘&‘ 引用详解

    引用: 引用是对一个变量 或 对象(后期讲解) 取的别名, 当引用初始化为某个变量, 便可以使用该引用名称或变量名称来指向此变量. 1.引用的定义: 定义别名方式: 真名的类型 & 别名 = 真名...: 当引用某个类型的变量之后, 引用的使用与该类型变量的使用相同, 引用可以引用指针类型变量, 结构体类型变量…, 可以给引用的别名引用, 但无实际意义. 3.引用形参: 形参 : 在函数定义中出现的参数可以看做是一个占位符...实参->形参 : 实参与形参之间是单向传递, 发生函数调用时, 实参会把值传给形参, 但形参的改变不影响实参 引用形参 : 引用形参和指针形参一样, 它们都可以改变实参的值 引用形参代码实现: #include...引用与指针对比: 当引用作为函数参数时, 与指针作为函数参数效果相同, 但引用不会产生指向对象的副本,节省时间和空间 理论来讲: 引用是一个别名,不占用内存(并不确切) 指针是一个变量, 一般占用**4...; 引用是直接访问,指针是间接访问 指针有多级指针, 但引用没有多级引用!

    1.2K40
    领券