首页 > 编程语言 >C++ 核心 2.引用

C++ 核心 2.引用

时间:2022-10-22 10:05:49浏览次数:52  
标签:10 const test0 int 核心 C++ 引用 ref

2 引用

2.1 引用的基本使用

作用:给变量起别名 语法:数据类型 &别名 = 原名

int a = 10;
int &b = a;
b = 100;
cout <<"a = " << a<< endl;
cout <<"b = " << b<< endl;

2.2 引用注意事项

引用必须初始化,且不能更改

int a = 10;
int b = 5;
int &c = a;
c = b;//这里不是修改引用,而是赋值,也就是让a的值变为5。

2.3 引用做函数参数

函数传参时,可以传入引用。 简化指针,修改实参。

void swap(int &a, int &b)
{
    int t = a;
    a = b;
    b = t;
}
...
a = 1;
b = 2;
swap(a,b); 

2.4 引用做函数的返回值

不要返回局部变量引用。(局部变量在栈里,会被编译器回收) 函数的调用可以作为左值:

int & test0() {
    static a = 10;
    return a;
}
...
int &ref = test0();
test0() = 1000;

2.5 引用的本质

引用的本质是一个指针常量。 这也解释了引用为什么不能更改。

int a = 10;
int &ref = a;//相当于 int* const ref = &a;

2.6 常量引用

修饰形参,防止误修改。

void showValue(const int &a) {
    cout<<"a="<< a << endl;
}
int & ref = 10 //错误,引用需要一个合法内存空间
const int & ref = 10; //正确,编译器会优化为:
//int temp = 10; const int & ref = temp;

标签:10,const,test0,int,核心,C++,引用,ref
From: https://blog.51cto.com/pigeon/5785645

相关文章

  • C++ 核心 2.引用
    2引用2.1引用的基本使用作用:给变量起别名语法:数据类型&别名=原名inta=10;int&b=a;b=100;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;2.2......
  • C++ 核心 3. 函数进阶
    3函数进阶3.1默认参数语法:返回值类型函数名(参数=默认值){}e:intfunc(inta,intb=10,intc=100){returna+b+c;}注意事项:1.默认参数应该在非默认参数......
  • C++ 核心 4.1 类的封装
    4类和对象面向对象三大特性:封装、继承、多态万物皆对象。对象=属性+行为类是抽象的对象。比如路上有很多(具体的)车,但抽象出来都属于车。定义类的语法:class类名{......
  • C++ Grade Book System
    C++GradeBookSystemDefineandimplementagradebooksystem.Thegradebookmustusepolymorphismtomanageacollectionofassessmentsofdifferenttypes.......
  • C++中static关键字的作用总结
    static的含义static的含义解释为静止的,静态的,当然它在编程语言中也是相关的含义,接下来,让我们看看在C++语言中,static关键字修饰不同的类型时,它的具体含义是什么。static修饰......
  • C++并发编程实战 第二版 电子书 pdf
    作者:安东尼·威廉姆斯(AnthonyWilliams)出版社:人民邮电出版社出品方:异步图书原作名:C++ConcurrencyinAction,SecondEdition 链接:C++并发编程实战第二版 ......
  • C++三角形区域随机行走
    #include<stdio.h>#include<stdlib.h>#include<vector>#include<time.h>#include<algorithm>#include<iostream>usingnamespacestd;vector<vector<int>>a(4);int......
  • 实验3 数组、指针与现代C++标准库
    一.实验结论:1.实验任务5:Info.hpp:#include<iostream>#include<string>#include<iomanip>usingnamespacestd;classInfo{public:Info(){}Info(st......
  • vue引用MarkDown(mavonEditor)编辑器,文档
    mavonEditorInstallmavon-editor(安装)npminstallmavon-editor--save如何引入:全局引用://全局注册importVuefrom'vue'importmavonEditorf......
  • 正则表达式(C、C++、Python、Shell)
    撰写本文档的初衷本来是想介绍正则表达式怎么写,但是百度一搜,正则表达式的教程的质量已经相当高,我便不在班门弄斧了。正则表达式是一种方法,在不同的语言中,它的应用样式可能......