C++ Primer 中说-----不能定义引用类型的引用,但是可以定义任何其他类型的引用

时间:2022-06-03 03:25:20
c++
#include "iostream"
using namespace std;

int main(int argc, char const *argv[])
{
int  ref1=10;
int  ref3=10;

int &ref2=ref1;
int &ref4=ref2;
//那么请问上面这两行代码,不就是定义了引用类型的引用吗?????为什么编译和运行都能正常进行。

//还有下面的这条语句编译是错误的,那么这个东西是引用的引用吗???
// int &(&ref5)=ref1;

cout<<"the program is running"<<endl;
return 0;

7 个解决方案

#1


读的好认真

应该是后面那种。

int & a;  是 int的 引用
指针的引用是    int * &a;
那引用(int &)的引用 应该是  int & & a;
至于是不是需要括号,就不知道了,因为本来就没有这个语法

至于第一种写法,还是 int的引用


 

#2


同楼上。就像int *p是定义成int型的指针一样,int &ref2=ref1指的是ref2是ref1的引用。下面同理

#3


引用不是 对象类型,所以没有引用。

#4


引用 3 楼 lm_whales 的回复:
引用不是 对象类型,所以没有引用。

这里专门指的是 C++  引用

#5


不能定义引用类型的引用, 意思是不能定义这样的东西.   int &&val;
你想想指针的指针应该就能明白这句话的意思了.  int**p;

int &ref2=ref1;
    int &ref4=ref2;
这个例子并不是引用的引用,  这里都仅仅是 int类型的引用.  只是你初始化的时候, 是把一个引用给它初始化了.

#6


楼主懂了吗?你看这两个类型还是int&啊int &ref2=ref1;
    int &ref4=ref2;

#7


谢谢 楼上的各位  前辈

#1


读的好认真

应该是后面那种。

int & a;  是 int的 引用
指针的引用是    int * &a;
那引用(int &)的引用 应该是  int & & a;
至于是不是需要括号,就不知道了,因为本来就没有这个语法

至于第一种写法,还是 int的引用


 

#2


同楼上。就像int *p是定义成int型的指针一样,int &ref2=ref1指的是ref2是ref1的引用。下面同理

#3


引用不是 对象类型,所以没有引用。

#4


引用 3 楼 lm_whales 的回复:
引用不是 对象类型,所以没有引用。

这里专门指的是 C++  引用

#5


不能定义引用类型的引用, 意思是不能定义这样的东西.   int &&val;
你想想指针的指针应该就能明白这句话的意思了.  int**p;

int &ref2=ref1;
    int &ref4=ref2;
这个例子并不是引用的引用,  这里都仅仅是 int类型的引用.  只是你初始化的时候, 是把一个引用给它初始化了.

#6


楼主懂了吗?你看这两个类型还是int&啊int &ref2=ref1;
    int &ref4=ref2;

#7


谢谢 楼上的各位  前辈