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重载. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |