听起来可能很愚蠢。在 C++prime 第 5 版 P258 中,它说:
默认情况下,this 的类型是指向类类型的非常量版本的 const 指针。例如,默认情况下,Sales_data 成员函数中 this 的类型是 Sales_data *const。
我可以理解,对于 this* 是一个 const 指针,这意味着它指向的对象一旦初始化就不能改变。但是它说:
虽然这是隐含的,但它遵循正常的初始化规则,这意味着(默认情况下)我们不能将它绑定到 const 对象。
但我写了以下代码,它仍然编译得很好:
class Test{
public:
Test() = default;
Test(const string &s): teststr(" ") {};
Test(int a) : testint(a) {};
Test(const string &s, int a): teststr(s), testint(a) {};
string getstr() const { return teststr; };
int getint() { return testint; }; //there is no const here
private:
string teststr;
int testint = 0;
};
int main(){
Test a("abc",2);
cout << a.getint() << " ";
cout << a.getstr() << endl;
cout << endl;
return 0;
}
所以我的问题是:如果编译器可以很好地编译它,无论是否有'const',这有什么关系?然后书上说:
毕竟,isbn 的主体不会改变 this 指向的对象,所以如果 this 是指向 const 的指针,我们的函数会更加灵活。
我想知道灵活性是什么?你能给我看一些例子吗?