Я согласен с вашим вопросом, но, к сожалению, C ++ разработан таким образом.Например:
class A {
int i; //<--- accessed with 'this'
static int s; //<---- accessed without 'this'
public:
static void foo () const // <-- imaginary const
{}
};
На сегодняшний день const
рассматривается в контексте this
.В некотором смысле, это узко.Его можно расширить, применив указатель const
за пределами this
.
, т. Е. «Предложенный» const
, который может также применяться к static
функциям, ограничит элементы static
от любых изменений.
В примере кода, если foo()
можно сделать const
, то в этой функции A::s
не может быть изменено.Я не вижу никаких языковых побочных эффектов, если это правило добавлено в стандарт.Наоборот, забавно, почему такого правила не существует!