如何重载的const和非const函数工作? [英] how does overloading of const and non-const functions work?
本文介绍了如何重载的const和非const函数工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
stl充满了这样的定义:
The stl is full of definitions like this:
iterator begin ();
const_iterator begin () const;
由于返回值不参与重载解析,唯一的区别是函数 const
。这是过载机制的这一部分吗?编译器的算法用于解析一行,如:
As return value does not participate in overloading resolution, the only difference here is the function being const
. Is this part of overloading mechanism? What is the compiler's algorithm for resolving a line like:
vector<int>::const_iterator it = myvector.begin();
推荐答案
在您给出的示例中:
vector<int>::const_iterator it = myvector.begin();
如果 myvector
-const版本 begin()
将被调用,你将依赖于从迭代器到const_iterator的隐式转换。
if myvector
isn't const the non-const version of begin()
will be called and you will be relying on an implicit conversion from iterator to const_iterator.
这篇关于如何重载的const和非const函数工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文