您好我正在使用C ++内置算法。我在这里有这个代码:
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
bool isDon(string& name) const {
return name == "Don";
}
string names[] = {"George", "Don", "Estelle", "Mike", "Bob"};
int main() {
string* ptr;
ptr = find_if(names, names+5, isDon);
return 0;
}
当我运行这个程序时,编译器给了我一个错误,其中我的isDon()
函数decleration驻留,这表示我不能在该函数decleration中使用cv-qualifier。那是为什么?
答案 0 :(得分:3)
const
影响(正式,限定)this
指针。独立式功能没有它:只有非静态成员功能。
答案 1 :(得分:2)
const
限定符仅引用成员函数,并声明该函数不会修改调用该成员函数的对象。通过使this
成为T const*
来实现语义。
对于免费功能,这没有意义。
答案 2 :(得分:2)
应该在没有tra const
的情况下声明此函数。它是一个自由函数,不属于某个类,因此函数const
没有意义。
bool isDon(string const& name) {
return name == "Don";
}
请注意,您还可以使用
形式的lambdaptr = find_if(names, names+5, [](string const& name){ return name == "Don"; });
答案 3 :(得分:2)
制作一个独立的函数const
没有任何意义,只有类或结构成员函数可以是const
。
那是因为const
告诉编译器(成员)函数不会修改对象实例。
答案 4 :(得分:1)
函数名后的const限定符用于函数 INSIDE a class ;这个功能不是一个类的一部分; const
告诉编译器该函数不会修改类中的成员。
“const限定符只能用于非静态成员函数类”