int foo(const float* &a) { return 0; } int main() { float* a; foo(a); return 0; }
编译器给出错误:
error: invalid initialization of reference of type ‘const float*&’ from expression of type ‘float*’ 但是当我尝试在foo中通过引用时,它正在编译很好. 我认为它是否应该表现出相同的行为,无论我是否参考. 谢谢,
error: invalid initialization of reference of type ‘const float*&’ from expression of type ‘float*’
但是当我尝试在foo中通过引用时,它正在编译很好.
我认为它是否应该表现出相同的行为,无论我是否参考.
谢谢,
const float f = 2.0; int foo(const float* &a) { a = &f; return 0; } int main() { float* a; foo(a); *a = 7.0; return 0; }
任何非常量引用或指针必须在指向类型中是不变的,因为非常量指针或引用支持读取(协方差操作)和写入(逆变器操作).
必须先从最大间接级别添加const.这将工作:
int foo(float* const &a) { return 0; } int main() { float* a; foo(a); return 0; }