我刚开始学习C++,从JAVA环境切换.
阅读一些Boost示例时,我发现在类中定义了以下两种方法:
const char* data() const
{
return data_;
}
char* data()
{
return data_;
}
Run Code Online (Sandbox Code Playgroud)
有两件事令我困惑.
首先是保留字const,我想我在这里理解.第一个const指的是char*哪个意味着我无法改变指针的值.第二个const告诉我,调用该函数不会改变我调用的对象的状态.这是正确的解释吗?
第二点混淆是为什么人们会有两个具有相同名称和签名的方法.编译器如何知道我打算调用哪一个?我怎么知道我是否被允许在打电话后更改数据data()而不知道我打了哪两个?
第一个函数返回一个指向常量数据的指针.的const在函数签名的端部表示该函数将不会修改和类的数据成员.
第二个函数返回一个指向可变数据的指针.调用者可以使用指针来修改类成员变量.
搜索网络和SO搜索"const correctness".