с методом экземпляра const, таким как int get_hours() const;
, const
означает, что определение int get_hours() const;
не изменит this
.
со статическим методом, таким как static void fun();
, const не применяется, поскольку this
недоступен.
вы можете получить доступ к статическому методу из класса или экземпляра из-за его видимости. более конкретно, вы не можете вызывать методы экземпляра или обращаться к переменным экземпляра (например, x
, hours
) из статического метода, потому что нет экземпляра.
class t_classname {
public:
static void S() { this->x = 1; } // << error. this is not available in static method
void s() { this->x = 1; } // << ok
void t() const { this->x = 1; } // << error. cannot change state in const method
static void U() { t_classname a; a.x = 1; } // << ok to create an instance and use it in a static method
void v() const { S(); U(); } // << ok. static method is visible to this and does not mutate this.
private:
int a;
};