加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – const向量引用重载

发布时间:2020-12-16 10:37:39 所属栏目:百科 来源:网络整理
导读:为简单起见,只需传递部分代码即可. class A {public:std::vectorint get(){ return myVector;}const std::vectorint get() const {return myVector;}private: std::vectorint myVector;} 我的问题是如何涉及重载的const get方法.当我尝试创建const_iterator
为简单起见,只需传递部分代码即可.

class A {
public:
std::vector<int> & get(){ return myVector;}
const std::vector<int> & get() const {return myVector;}
private:
   std::vector<int> myVector;
}

我的问题是如何涉及重载的const get方法.当我尝试创建const_iterator和调试代码时,它涉及非const方法.
想要了解它的工作原理我使用以下代码段

A myA;
myA.get().push_back(1);
for (const auto& v: myA.get()) { } // it involve not const get method

要么

std::vector<int>::const_iterator cit = myA.get().begin()
//it involves not const method

要么

const std::vector< int > v = myA.get( );
 // involves non-const method

甚至我创建功能:

int constVector( const std::vector< int > &constVector )
{
   return constVector[0];
}

int b = constVector( myA.get( ) ); // it involves non-const method

如果不涉及重载const方法,那么它的目的是什么?

我做错了什么以及我如何涉及const方法.

解决方法

由于myA本身不是const,因此重载解析将有利于非const重载.

这就是我害怕的生活.

如果你想要const版本,那么你可以在调用站点使用const_cast,甚至是隐式转换,将myA转换为const类型:

const A& myA_const = myA;

并使用myA_const来调用const重载.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读