C++/Ключові слова/const cast

Матеріал з Вікіпідручника
Перейти до навігації Перейти до пошуку

Ключове слово const_cast можна використовувати, щоб усунути кваліфікатори доступу const or volatile у об'єкта, тобто привести тип, що має такі кваліфікатори, до типу без них. Вихідний тип даних, до якого виконується приведення, має бути таким самим як і тип початкової змінної, але він не має повторювати кваліфікатор const. Вихідний тип має бути посиланням або вказівником.

Синтаксис
    TYPE* const_cast<TYPE*> (object);
    TYPE& const_cast<TYPE&> (object);

Наприклад, наступний код використовує оператор const_cast для усунення кваліфікатору const у об’єкта:

class Foo {
public:
  void func() {} // не константна функція член класу
};

void someFunction( const Foo& f )  {
  f.func();      // помилка компіляції: не можна викликати не константну функцію
                 // з константним посиланням
  Foo &fRef = const_cast<Foo&>(f);
  fRef.func();   // Гаразд
}