это может звучать глупо. В С++ prime 5th edition P258 говорится:
по умолчанию, тип этого является указателем константы для версии nonconst класса. Например, по умолчанию тип этого в функции члена 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;
}
поэтому мой вопрос: если компилятор может скомпилировать его в порядке, есть ли "const" или нет, почему это имеет значение? а затем в книге говорится:
в конце концов, тело isbn не изменяет объект, на который это указывает, поэтому наша функция будет более гибкой, если бы это был указатель на const.
и мне интересно, что такое гибкость? Не могли бы вы показать мне несколько примеров?