C++引用类型介绍

938 阅读1分钟

启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情

之前一直没有聊C++的一些核心的概念,只是基于基本的数据类型在聊,在掌握了一点点c++的概念之后,我们来聊聊C++的引用,指针,迭代器这些更加深入的概念吧,当然还是从简单的开始,我们先聊聊引用。

引用应该是上面说的三个概念当中最简单的一个,就是给现有的对象另外起一个名字,但是要注意的是引用也是单独的一种类型,就是引用类型,这里比较拗口的一句话是,引用类型的类型由被引用对象的类型决定,但是不难理解,具体编写代码的时候使用&变量的类型来声明是引用类型,上代码:

#include <iostream>
#include <typeinfo>
​
using namespace std;
​
int main(){
   int num = 1;
   int &d = num;
​
   cout << num << ":" << typeid(num).name() << endl;
   cout << d << ":" << typeid(d).name() << endl;
​
​
   return 0;
}
​

对于这段代码,有几个点要注意:

1、一个之前没有聊过的功能typeid,这个功能可以返回对象的类型,他下面的name方法用来返回具体的类型名称,当然要使用就需要include加载一下啦。

2、上面说:引用类型的类型由被引用对象的类型决定的,这里一定要刻意说一下,在编程的角度上看,int类型的对象要用int类型的引用,否则会报错哦。

这里要注意的是:

1、和声明其他的类型不一样的是,声明引用类型必须要进行初始化,啥叫初始化,最简单来说就是给一个初始值,基于C++引用类型的特性(他本身没有值)来看,引用类型声明之初就要指向要指向的对象,并且也无法修改了,引用发生修改之后,原对象也会被修改,所以:

include <iostream>
#include <typeinfo>
​
using namespace std;
​
int main(){
   int num = 1;
   int &d = num;
   d = 3; //这里修改会导致num和d都变成3
​
   char &c; //错误写法
   
   cout << num << ":" << typeid(num).name() << endl;
   cout << d << ":" << typeid(d).name() << endl;
​
​
   return 0;
}
​

2、一个变量可以有多个引用哦。

include <iostream>
#include <typeinfo>
​
using namespace std;
​
int main(){
   int num = 1;
   int &d = num;
   int &c = num;
   
   cout << num << ":" << typeid(num).name() << endl;
   cout << d << ":" << typeid(d).name() << endl;
   cout << c << ":" << typeid(c).name() << endl;
​
   return 0;
}

本来还想聊聊C++引用的使用场景,但是大部分和函数有关,所以只能之后再补充了,最后还是请各位大佬多多指点呀。