Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 传递const int*和int时会调用重载函数的不同版本(const int*const&;/&;)*_C++_Pass By Reference_Implicit Conversion_Rvalue_Lvalue - Fatal编程技术网

C++ 传递const int*和int时会调用重载函数的不同版本(const int*const&;/&;)*

C++ 传递const int*和int时会调用重载函数的不同版本(const int*const&;/&;)*,c++,pass-by-reference,implicit-conversion,rvalue,lvalue,C++,Pass By Reference,Implicit Conversion,Rvalue,Lvalue,我在代码中遇到了一个错误,调用了错误的重载函数 问题归结为: void func(const int* const& ptr){ std::cout << "LValue reference\n"; } void func(const int* const&& ptr){ std::cout << "RValue reference\n"; } int main(){ const int* ptr; func(p

我在代码中遇到了一个错误,调用了错误的重载函数

问题归结为:

void func(const int* const& ptr){
    std::cout << "LValue reference\n";
}
void func(const int* const&& ptr){
    std::cout << "RValue reference\n";
}

int main(){
    const int* ptr;

    func(ptr);

    return 0;
}
void函数(常量int*const&ptr){

std::cout一个
int*
与一个
const int*
不是同一类型。因为它们不是同一类型,所以必须进行转换,因为您不能将引用绑定到不同的类型,然后声明引用它(处理派生对象时除外)

这意味着
int*
用于创建一个临时
const int*
,该临时指针是一个右值。由于它是一个右值,因此将选择右值引用重载