为什么我不能在我的函数中使用常量限定符?
Why I can't use const qualfier in my function?
您好,我正在使用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类型限定符在功能名称之后不久
相关文章:
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 为什么"具有常量成员的结构"类型的指针不能指向"具有非常量成员的结构"?
- 为什么不能用常量表达式声明数组?
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 生成 constexpr 字符串表,不能产生常量表达式
- 为什么C++编译器不能做更好的常量折叠?
- 为什么右值不能绑定到非常量左值引用,除了写入临时无效的事实?
- 错误:'new'不能出现在常量表达式中
- 为什么我不能将常量左值引用绑定到返回 T&&&的函数?
- 为什么我不能在非常量表达式上使用此模板阶乘函数?
- 不能(隐式地)从字符**转换为常量字符**吗?
- 为什么作为返回类型的右值引用不能初始化非常量引用?
- 为什么我不能使用与"常量字符*"相同的"const int*"创建一个 int 数组?
- 为什么我不能将 op 结果乘以常量特征张量数组
- 为什么我不能将 2 个常量字符* 连接到 std::string?
- 对类型 'A *' 的非常量左值引用不能绑定到不相关的类型 'std::shared_ptr<A>' 的值
- 为什么我不能在标头中只定义一个非常量 gloabal 变量?如果我使用命名空间,为什么我必须声明它"extern"?
- 为什么常量引用不能延长通过函数传递的临时对象的生存期?
- 为什么我们不能在声明之前使用预处理器 #define 常量