C ++左值引用

问题描述 投票:0回答:2

所以最近我重新访问了有关类型声明的引用,但我不太理解它们。

考虑此伪代码:

int ia = 10;
int& ref = ia;

现在,我的问题是:

  1. [这些int& ref如何在内部工作,这是否意味着ref的地址被分配了ia的地址,因此等于&ia,如果不是,那么编译器在看到这些引用时会做什么?
  2. 为什么这些references不在C ++程序中编译?
c++ reference lvalue
2个回答
1
投票

您完全不必考虑地址。 ref只是ia的别称,或者换句话说,refia的别名。只是为您的代码添加语法糖。

在这种情况下,编译器根本不需要做很多事情,只需跟踪代码何时包含ref,将其替换为ia


-1
投票

C ++标准未指定编译器应如何实现引用。许多人认为它们只是别名,但实际上,它们实际上是作为const指针实现的。

C ++引用是幕后的const指针。因此:

int ia = 10;
int& ref = ia;
ref++; // ia is 11 now

可能由编译器转换为:

int ia = 10;
int* const ref = ia;
(*ref)++; // ia is 11 now

它们需要初始化,因为必须初始化常量。

© www.soinside.com 2019 - 2024. All rights reserved.