【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&

     

目录

8.7 引用(Reference)

8.7.1 普通变量引用

8.7.2 数组引用

8.7.3 指针变量的引用方法

8.7.4 函数的引用

8.7.5 引用作为函数的参数

8.7.6 引用作为函数的返回值类型

1. 返回值类型不用使用局部变量的引用类型

2.返回值类型为引用,可以完成一系列操作链式操作

8.7.7 常引用

1、给常量取别名,不能通过常引用修改内容

2、常引用作为函数的参数:防止函数内部修改外部的值

     在C/C++中指针的作用基本都是一样的,但是C++增加了另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference)。变量名实质上是一段连续内存空间的别名,是一个标号(门牌号)程序中通过变量来申请并命名内存空间通过变量的名字,可以使用存储空间对一段连续的内存空间只能取一个别名吗?C++11开始以后新增了引用的概念,引用可以作为一个以及存在的对象的别名。

8.7 引用(Reference)

8.7.1 普通变量引用

引用的本质是对象的一个别名,即一个引用是对某个对象的另一个名称。

引用过程步骤:

1.&取个别名

2.给那个变量取别名,就定义一个相同的类型

3.从上往下整体替换

例如:

 int a = 10;   
 //给变量a取引用的别名,叫b   
int &b = a; //引用必须初始化

 【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第1张图片

    int a = 10;

    //给变量a取引用的别名,叫b
    //定义的时候 &修饰变量为引用 b就是a的别名(引用)
    //编译器不会给引用的别名开辟空间
    int &b = a; //引用必须初始化
    //此时,a和b代表同一地址空间
    //1.看内容
    cout<<"a:"<

8.7.2 数组引用

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第2张图片

    int arr[5] = {10, 20, 30, 40, 50};
    int n = sizeof(arr) / sizeof(arr[0]);
    int (&myArr)[5] = arr;
    int i = 0;

    for (i = 0; i < n; i++) {
        cout << myArr[i] << " ";
    }
    cout << endl;

8.7.3 指针变量的引用方法

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第3张图片

    int num = 10;
    int *p = #

    int* &myP = p;
    std::cout << "*p = " << *p << std::endl;     // 输出:10
    std::cout << "*myP = " << *myP << std::endl;     // 输出:10

8.7.4 函数的引用

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第4张图片

8.7.5 引用作为函数的参数

函数内部可通过引用操作外部的变量

例如:

void swap1(int *x,int *y){
    int temp = *x;
    *x = *y;
    *y = temp;
}

使用引用传参,需要直接传地址

void swap2(int &x,int &y){
    int temp = x;
    x = y;
    y = temp;
}

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第5张图片

代码: 

void swap1(int *x,int *y){
    int temp = *x;
    *x = *y;
    *y = temp;
}

void swap2(int &x,int &y){
    int temp = x;
    x = y;
    y = temp;
}
void test07(){
    int a = 10;
    int b = 20;
    cout << "a = "<< a << ",b =" <8.7.6 引用作为函数的返回值类型 
  

1. 返回值类型不用使用局部变量的引用类型

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第6张图片

注意此时的引用对象的生命周期,局部变量的生命周期就只存活在该函数体之内的范围。 

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第7张图片

2.返回值类型为引用,可以完成一系列操作链式操作

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第8张图片

struct Stu{
    Stu& printstu(Stu &ob,int value){
        cout<

8.7.7 常引用

1、给常量取别名,不能通过常引用修改内容

 

 【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第9张图片

代码:

//int &num1 = 10;//error 不可以,
    const int& num = 10; //num 就是10的别名
    //num = 10 是错误的说法
    cout << num <

2、常引用作为函数的参数:防止函数内部修改外部的值

【带头学C++】----- 八、C++面向对象编程 ---- 8.7 引用(Reference)&_第10张图片

void printInt(const int &a){
    //a = 200;//err
    cout<<"a ="<

你可能感兴趣的:(C++从基础到抗大旗,c++,开发语言,链表,笔记,学习)