首页 > 解决方案 > 带有引用和指针的指针的重载返回

问题描述

我得到以下代码:

 class myarray 
 {  

    float* rawdata;

    float*   GetRawData () const noexcept { return rawdata; };
    float&   GetRawData () const noexcept { return rawdata; };
    const float&   GetRawData () const noexcept { return rawdata; };


 } 

我收到编译器错误,说不能重载前两个成员函数。C++ 是否不可能区分,因为我们在引用中调用函数时会有不同的语法

标签: c++pointersreferenceoverloading

解决方案


C++是不是不能区分

它不是。重载可以使用不同的参数列表,在成员函数的情况下,使用 ref/const 限定符。但不是通过返回值。您的重载具有相同的参数列表和 ref/const 限定符,因此它们不能相互重载。

因为我们在引用中调用函数时会有不同的语法

不,我们不会。在这两种情况下调用是相同的:

this->GetRawData()

推荐阅读