【问题标题】:What is the return type of address-of (&) operator?地址 (&) 运算符的返回类型是什么?
【发布时间】:2020-11-30 02:40:30
【问题描述】:
int main(){
    int i = 0;
    int *p = 123;
    return 0;
}

错误信息是:invalid conversion from 'int' to 'int*' [-fpermissive] int *p = 123;

我知道int *p = &i; 可以完成这项工作,但是编译器如何将&i 类型转换为int * 类型(& 的返回类型是什么)?

感谢任何人向我解释这一点!

【问题讨论】:

  • 因为从字面上看,这就是 C++ 标准所说的。

标签: c++ pointers reference


【解决方案1】:

来自reference:

对于形式的表达

& expr

如果操作数是某个对象或函数类型 T 的左值表达式,则 operator& 创建并返回 T* 类型的纯右值,具有相同的 cv 限定,即指向操作数指定的对象或函数。

所以,表达式&i 的类型是int*,其中i 的类型是int。


请注意,对于expr 是类类型的这种形式的表达式,地址操作符可能会被重载,并且对该重载运算符可以返回的类型没有任何限制。

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多