【发布时间】:2019-06-11 11:18:53
【问题描述】:
我试图传递对指针的引用,主要有两种情况:
-
const int* &ref_var- ref_var 是对指向常量整数的指针的引用。 -
int *const &ref_var- ref_var 是对指向整数的常量指针的引用。
现在第二种情况可以正常工作,因为我无法修改指针本身,但在第一种情况下,我收到一条我认为不应该存在的错误消息,因为 non-const 指针变量可以作为参数传递给以 constant 指针作为参数的函数。
代码:
#include<iostream>
using std::cout;
using std::endl;
void fun(const int* &ref_var) //error: invalid initialization of reference of type const int*& from expression of type int*
{
//BLANK
}
int main()
{
int x=9;
int *p=&x; //ERROR VANISHES IF P IS DECLARED AS POINTER TO CONSTANT INT
fun(p);
return 0;
}
当函数fun被声明为:
void fun(const int *ptr)
{
//BLANK
}
尽管传递的参数是 non-const 指向 int 的指针,但它工作正常。
你能告诉我哪里出错了。
【问题讨论】: