gpt4 book ai didi

c++ - 是否可以将引用类型别名与指针运算符一起使用来声明对指针的引用?

转载 作者:IT老高 更新时间:2023-10-28 22:59:37 30 4
gpt4 key购买 nike

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

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

}
  • 因为好奇,当我使用 std::vector<int>::reference 的 Element-type 时我想将它与指针运算符 * 结合使用声明对指针的引用:

    int* ptr = new int(1000);
    std::vector<int>::*(reference rptr) = ptr; // error: expected expression
  • 但是我可以使用指针类型别名结合引用运算符“&”来声明它:

    using pInt = int*;

    int i = 57;
    int* ptrI = &i;
    pInt(&rpInt) = ptrI;

    cout << *rpInt << endl;

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

最佳答案

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

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

auto * ptr = &reference_to_thing;

如果你想要一个指针的引用,语法是

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

关于c++ - 是否可以将引用类型别名与指针运算符一起使用来声明对指针的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358827/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com