小编Jok*_*ker的帖子

C++这个和常量对象

你能告诉我为什么这段代码有效吗?replace_if算法使用重载的operator().在main函数中,我创建了IsEqual类的常量对象,因此只应使用常量函数成员.某种程度上,constancy不起作用,并且该运算符被调用.

#include <iostream>
#include <vector>
#include <algorithm>

class IsEqual {
    int value;
public:
    IsEqual(int v) : value(v) {}
    bool operator()(const int &elem){
    this->value=6;
    return elem == value;
    }
};

int main()
{
    const IsEqual tst(2);
    std::vector<int> vec = {3,2,1,4,3,7,8,6};
    std::replace_if(vec.begin(), vec.end(), tst, 5);
    for (int i : vec) std::cout << i << " ";
    std::cout<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

结果:3 2 1 4 3 7 8 5

c++ constants this callable-object

6
推荐指数
1
解决办法
148
查看次数

标签 统计

c++ ×1

callable-object ×1

constants ×1

this ×1