首页 > 解决方案 > 是否可以将引用类型别名与指针运算符一起使用来声明对指针的引用?

问题描述

我在这里有一个简单的例子:我使用类型别名 usingusing关键字作为引用类型然后我想知道我是否可以使用该类型别名和指针运算符(*)来声明对指针的引用:

int main(){

    using ref_int = int&;

    int x = 10;
    int* p = &x;

    //int*(&rpx) = p;
    //ref_int * rptrx = p; // pointer to reference is not allowed.
    *ref_int(rptrx) = p; // rptrx is undefined

}

** 我知道我不能有指向引用的指针,因为引用只是已经存在的对象的别名,而指针是对象,因此我们可以拥有指针或对它的引用。

标签: c++pointersreferencetype-alias

解决方案


您不能在 C++ 中拥有指向引用的指针。在 C++ 中,引用只是它们所引用事物的别名,标准甚至不要求它们占用任何存储空间。尝试使用引用别名来引用指针是行不通的,因为使用别名只会给你一个指向引用类型的指针。

所以,如果你想要一个指向引用所指事物的指针,你只需使用

auto * ptr = &reference_to_thing;

如果您想要引用该语法的指针

int foo = 42;
int* ptr = &foo;
int*& ptr_ref = ptr;

推荐阅读