为什么我不能在我的函数中使用常量限定符?

Why I can't use const qualfier in my function?

本文关键字:常量 不能 我的 函数 为什么      更新时间:2023-10-16

您好,我正在使用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驻留,这说我不能在该功能解析中使用CV-Qualifier。为什么?

const影响(正式,有资格)this指针。独立函数没有它:只有非静态成员函数才能。

应在没有尾随的const的情况下声明此功能。它是一个免费的功能,不属于类,因此该功能为const是没有意义的。

bool isDon(string const& name) {
    return name == "Don";
}

请注意,您也可以使用表格的lambda

ptr = find_if(names, names+5, [](string const& name){ return name == "Don"; });

const预选赛仅引用成员函数,并声明该函数不会修改调用该成员函数的对象。语义是通过使this A T const*实现的。

对于免费功能,这是没有意义的。

制作独立函数const没有任何意义,只有类或结构成员函数才能是const

那是因为const告诉编译器(成员)函数不会修改对象实例。

函数名称之后的const限定符用于class 内的函数;此功能不是课程的一部分;const告诉编译器该函数不会在类中修改成员。

" const预选赛只能用于类非静态成员函数"

const类型限定符在功能名称之后不久

相关文章: