美文网首页c++入门学习
c++ 入门 - 引用(一)

c++ 入门 - 引用(一)

作者: 昵称_7baf | 来源:发表于2018-10-16 00:47 被阅读0次
什么是引用
  • 在c++中,可以使用引用可以起到跟指针类似的功能
    如:
 int age = 20;
// rAge就是一个引用
 int &rAge = age;
  • 引用相当于是变量的别名,可以用于基本数据类型、枚举、结构、类、指针、数组等
    如:
    基本数据类型
int age = 20;
// rAge就是一个引用
 int &rAge = age;

枚举:

enum Season {
    Spring,
    Summer,
    Fall,
    Winter
};

    Season season;
    Season &rSeason = season;
    rSeason = Winter;
    cout << season << endl;

输出结果为:3

结构体:

struct Student {
    int age;
};
    Student stu;
    Student &rStu = stu;
    rStu.age = 20;
    cout << stu.age << endl;

输出结果为:20

指针:

    int a = 10;
    int b = 20;
    int *p = &a;
    int * &rp = p;
    rp = &b;
    *p = 30;
    cout << a << "," << b << endl;

输出结果为:10,30

数组:

    int array[] = {10, 20, 30};
    int (&rArray)[3] = array;
    cout << rArray[0] << endl;

输出结果为:10

  • 对引用做计算,就是对引用所指向的变量做计算
    如:
  int a = 10;
  int b = 20;
  int &ra = a;
  int &rb = b;
  int c = ra + rb;
  cout << c << endl;
  • 在定义引用的时候就必须初始化,一旦指向了某个变量。就不可以再改变,“从一而终”
  • 可以利用引用初始化另一个引用,相当于某个变量的多个别名
    如:
    int a = 10;
    int &ra = a;
    int &rb = ra;
    cout << ra << endl;
    cout << rb << endl;
  • 不存在引用的引用,指向引用的指针,引用数组
和指针的比较
  • 比指针更安全,因为引用定义的时候就初始化了,指向了某个变量就不能再改变,所以比指针更安全
  • 函数的返回值可以被赋值
    如:
int age = 10;

int &func(){
    return age;
}

func() = 30;
cout << "a = " << age << endl;

输出结果:a = 30

const
  • const就是常量的意思,器修饰的变量不可改变
    -如果是修饰的是类、结构体(的指针),其成员也不可改变
  • const 修饰的是它右边的功能
    如 :
    int age = 10;
    const int *p0 = &age;
    int const *p1 = &age;
    const int * const p3 = &age;
    int const * const p4 = &age;

因为const总是修饰他右边,所有*po 和 *p1 都是常量 po和p1 是变量,
而p3 和 p4 p3和p4,都被const 修饰了,所有他们都是常量 。

常引用
  • 引用也是可以被const修饰的,这样就无法通过引用修改数据了,我们可以称为常引用
  • const必须写在&符号的左边,才能算常引用
    int age = 10;
    int const &rage = age;
  • 常引用可以指向不同类型的数据
  • 常用语可作为函数参数(此规则也是用与const的指针)
    如:
int sum(const int &a, const int &b){
    return a + b;
}

有如下的特点
1、可以接受const和非const的实参(而非const的引用,只能接受非const实参)

    int v1 = 10;
    int v2 = 20;
    sum(v1, v2);

    const int v3 = 30;
    const int v4 = 40;
    cout << sum(v3, v4) << endl;

2、可以和非const引用构成重载
如:

int sum(const int &a, const int &b){
   return a + b;
}

int sum(int &a, int &b){
   return a + b;
}
  • 当常引用指向了不同类型的数据时,会产生临时变量,就是引用指向的并不是初始化时的那个变量

相关文章

  • c++ 入门 - 引用(一)

    什么是引用 在c++中,可以使用引用可以起到跟指针类似的功能如: 引用相当于是变量的别名,可以用于基本数据类型、枚...

  • c++学习文档-更新于2020年12月05日

    c++学习文档汇总 [TOC] c++ primer部分 c++学习笔记 引用(左值引用) int &ref...

  • 零基础怎样学习好C/C++?

    C++比C多了两个加号,C++比C语言难学吗?如何入门C++?C++基础入门学什么?后期开发学什么? C++语言诞...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • [C++之旅] 4 C++的引用

    [C++之旅] 4 C++的引用 基本数据的引用 apple_a为apples的引用,修改apple_a等同于修改...

  • C++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • C++ 引用传递的学习

    C++ 引用与引用作为函数的参数C++函数的三种传递方式为:值传递、指针传递和引用传递 C++ 上课习题 刘月林2...

  • C++入门系列博客三 引用和指针

    C++ 引用和指针 作者:AceTan,转载请标明出处! 引用和指针对于C++来说很重要,是学习C++绕不过去的一...

  • Reference 引用

    c++之 引用&参数传递 引用是C++中的概念,初学者容易把引用和指针混淆一起。 一下程序中,n是m的一个引用(r...

  • C++ 拷贝控制(二) — 移动构造函数和移动赋值运算符

    相关文章: C++ 拷贝控制(一) — 析构函数、拷贝构造函数与拷贝赋值函数 C++ 引用类型 — 左值引用、常引...

网友评论

    本文标题:c++ 入门 - 引用(一)

    本文链接:https://www.haomeiwen.com/subject/uaqczftx.html