它可能听起来很愚蠢.在C++ prime第5版P258中,它说:
默认情况下,它的类型是指向类类型的非对象版本的const指针.例如,默认情况下,Sales_data成员函数中的类型是Sales_data*const.
我可以理解,对于这个*是一个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;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如果编译器能够很好地编译它是否存在'const',为什么它重要?然后这本书说:
毕竟,isbn的主体不会改变这个指向的对象,所以如果这是一个指向const的指针,我们的函数会更灵活. …