Возможно, было бы полезно иметь простой пример кода.
class Foo {
public:
static void static_function();
void const_function() const;
};
// Use of static function:
Foo::static_function();
// Use of const function:
Foo f;
f.const_function();
Основное различие между ними состоит в том, что функция const
является функцией member - то есть, он вызывается в экземплярах класса Foo
.Это означает, что сначала вам нужно создать экземпляр объекта типа Foo
, а затем этот объект действует как получатель вызова const_function
.Сам по себе const
означает, что вы не будете изменять состояние объекта, который является получателем вызова этой функции.
С другой стороны, функция static
по сути является свободной функцией, где выМожно назвать это без получения объекта.Вне области действия класса, в котором он определен, однако, вам нужно будет квалифицировать его, используя имя класса: Foo::static_function
.
Поэтому не имеет смысла иметь функцию, которая одновременноstatic
и const
, так как они используются в совершенно разных контекстах.Не нужно беспокоиться об изменении состояния любого объекта при вызове функции static
, потому что не не получает объект - он просто вызывается как свободная функция.