c++ const成员函数返回值问题。

  • Post author:
  • Post category:其他



发现一个奇怪的问题,mark

class Demo
{
public:
    std::vector<int> *getVector()const;
    const std::vector<int> *getVector()const;
    std::vector<int> *getExternVector()const;
private:
    std::vector<int> m_vecInt;
};

std::vector<int> *Demo::getVector()const //
{
    return &m_vecInt; //编译出错,无法从"const std::vector<int>* "转换为"std::vector<int>*"
}

const std::vector<int> *Demo::getVector()const
{
    return &m_vecInt; //编译ok
}

std::vector<int> *Demo::getExternVector()const
{
    auto pVec = new std::vector<int>;//编译ok。(当然不提倡)
    return pVec;
}



总结:1、const成员函数对成员变量有“保护趋向”,



std::vector<int>* getVector() const



{




return &m_vecInt;



//相当于


const std::vector<int> *pRetVal = &m_vecInt;


return pRetVal;



}



2、而对于非成员变量,则不这样做。




版权声明:本文为weixin_32208747原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。