gpt4 book ai didi

c++ - 什么时候可以用 const 装饰调用我的重载函数?

转载 作者:太空宇宙 更新时间:2023-11-03 17:24:32 26 4
gpt4 key购买 nike

在下面的代码中,我有两个 begin() 函数。何时调用第二个 (const) 版本?我问的原因是因为STL vector有类似的特性,但是可以正确调用。我期待这条线abc.begin();将调用 begin 函数的 const 版本,但它没有。

#include <vector>
using namespace std;

class test {
public:
test(vector<int> const &x) : a{x} {};
test(vector<int> &x) : b{x} {};
vector<int> begin() {
cout << "int begin() is called" << endl;
return b;
}
const vector<int> begin() const {
cout << "int const begin() const is called" << endl;
return a;
}
private:
const vector<int> a;
vector<int> b;
};

int main() {
vector<int> b{1, 2, 3, 4, 5};
const vector<int> a{4, 5, 6, 7, 8};
test abc{a};
test bcd{b};
bcd.begin();
abc.begin();
return 0;
}

来自STL vector 的代码示例

    iterator begin() _NOEXCEPT
{return __make_iter(0);}
const_iterator begin() const _NOEXCEPT
{return __make_iter(0);}

最佳答案

现在我明白了。为了使用 const 成员函数,我们需要将实例声明为常量,即

const test abc{a};

关于c++ - 什么时候可以用 const 装饰调用我的重载函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59710171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com