如何重载的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.