Top.Mail.Ru
Уведомления
Очистить все

const после имени функции?

(@kotopes)
New member

Здравствуйте, столкнулся с таким объявлением функции:

void function() const
{
}

и впал в ступор)

Подскажите, что значит такое использование const? Опыта в использовании C++ практически не имею, от того и такие вопросы)

P. S. Эта функция внутри класса, если надо могу сделать минимальный пример.

Цитата
Создатель темы Размещено : 02.03.2025 12:22
Aveal
(@aveal)
Top level Admin

Приветствую, видел когда-то отличное объяснение, которое четко позволяет понять логику, сейчас распишу.

Суть в том, что методы класса имеют неявный параметр this, который может использоваться внутри функций. То есть определение вида:

class TestClass 
{
  void testFunction(int arg1, int arg2);
}

Можно для наглядности представить в виде:

class TestClass 
{
  void testFunction(TestClass *this, int arg1, int arg2);
}

 this в роли неявного аргумента функции. При использовании const:

class TestClass 
{
  void testFunction(int arg1, int arg2) const;
}

 Можно считать, что мы получаем следующее:

class TestClass 
{
  void testFunction(const TestClass *this, int arg1, int arg2);
}

 То есть в данном случае объект, к которому можно обратиться через this, не доступен для модификации внутри функции.

ОтветитьЦитата
Размещено : 03.03.2025 10:57
Aveal
(@aveal)
Top level Admin

Вот, нашел тему на SO - https://stackoverflow.com/questions/15999123/const-before-parameter-vs-const-after-function-name-in-c

ОтветитьЦитата
Размещено : 03.03.2025 11:00
(@kotopes)
New member

@aveal да, тоже эту тему изучал, очень доходчиво! Спасибо

ОтветитьЦитата
Создатель темы Размещено : 03.03.2025 11:53
Поделиться: