c++ - 引用和指针在哪里强制执行?

标签 c++ pointers reference

<分区>

据我所知,指针保存一个值的地址,而引用可以被认为是const 指针。

来自这个示例代码:

int main() {
    int i = 1;
    int &ri = i;
    int *pi = &i;
    return 0;
}

反汇编,指针和引用看起来完全一样:

main:
    push    ebp
    mov ebp, esp
    sub esp, 16
    mov DWORD PTR [ebp-12], 1
    lea eax, [ebp-12]
    mov DWORD PTR [ebp-8], eax
    lea eax, [ebp-12]
    mov DWORD PTR [ebp-4], eax
    mov eax, 0
    leave
    ret

指针和引用是否仅由编译器强制执行?

最佳答案

From what I understand, pointers hold the addresses of a value, and references can be thought as const pointers.

这是一个简单的观点。该标准定义了它们的行为。弄清楚如何支持该行为取决于实现。

给定

int i = 0;
int& ref = i;
int* ptr = &i;

标准要求

&ref == &i

&ptr != &i;

因此,将引用视为其行为的某些方面的 const 指针可能有意义,但对于其行为的所有方面绝对没有意义。

关于c++ - 引用和指针在哪里强制执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42407349/

相关文章:

c++ - 如何使用此 protected 成员函数获取所需的输出

c++ - C++ 中 undefined reference 错误

c++ - 如何在我的软件中配置中文支持?

c++ - 向双端队列指针发出设置值

C++无效指针错误

c++ - 尝试将指针作为参数传递给指向文件的 fstream 成员

c# - 我应该如何调用与我的主应用程序一起分发的 .NET exe

在 T1 和 T2 之间选择的 C++ 类型特征

c++ - 没有匹配函数来调用 C++

c - 从通过打印换行符修改的函数返回的数组