Вопросы по теме 'const-cast'

Использование C++ const_cast вместо приведений в стиле C
Почему следующее?: const int i0 = 5; //int i1 = const_cast<int>(i0); // compilation error int i2 = (int)i0; // okay int i3 = 5; //const int i4 = const_cast<const int>(i3); // compilation...
10780 просмотров
schedule 05.06.2022

const_cast и UB
$ 5.2.11 / 7 - "[Примечание: в зависимости от типа объекта операция записи через указатель, lvalue или указатель на член данных, являющаяся результатом const_cast, отбрасывающего квалификатор const68) может производить неопределенное поведение...
824 просмотров
schedule 24.10.2022

Как вызвать неконстантную функцию внутри константной функции (C++)
У меня есть устаревшая функция, которая выглядит так: int Random() const { return var_ ? 4 : 0; } и мне нужно вызвать функцию в этом унаследованном коде, чтобы теперь она выглядела так: int Random() const { return var_ ? newCall(4) :...
32660 просмотров

static_cast и ссылка на указатели
Может ли кто-нибудь сказать мне, почему это не компилируется: struct A { }; struct B : public A { }; int main() { B b; A* a = &b; B* &b1 = static_cast<B*&>(a); return 0; } Теперь, если вы замените статическое...
2124 просмотров
schedule 26.04.2023

Использование const_cast для игнорирования volatile?
const_cast также можно использовать, чтобы игнорировать тот факт, что объект является volatile . Однако, что это на самом деле означает?? Я не могу придумать пример, в котором вы использовали бы const_cast для переменной volatile ??
473 просмотров
schedule 19.10.2022

Безопасно ли удалить константу через const_cast и вызвать неконстантную функцию, которая не изменяет полученный объект?
Я знаю, что отбрасывание const -сущности должно выполняться с осторожностью, и любая попытка удалить const -сущность из первоначально const объекта с последующим изменением объекта приводит к неопределенному поведению. Что, если мы хотим удалить...
10286 просмотров
schedule 16.04.2023

Const приведение к пустому базовому классу
Является ли неопределенным поведением const_cast удаление пустого базового класса и вызов для него неконстантного метода? Например class EmptyBase { public: void bar() { ... } }; class Something : public EmptyBase { public: void foo()...
164 просмотров
schedule 10.06.2023

Является ли приведение указателя к константному указателю и возврат к исходному типу неопределенным?
Я знаю, что приведение константного указателя к неконстантному типу может быть неопределенным поведением, но что, если указатель изначально не является константным? int i = 0; int * pi = &i; const int * const_pi = const_cast<const...
2218 просмотров

Неожиданное поведение, связанное с const_cast
Я придумал следующий пример, демонстрирующий неожиданное поведение. Я ожидал, что после push_back все, что есть в векторе, будет там. Похоже, что компилятор каким-то образом решил повторно использовать память, используемую str. Может ли...
124 просмотров

Константное приведение к не-указательному не ссылочному типу
Из [expr.const.cast] / 3 : Для двух похожих типов T1 и T2 prvalue типа T1 может быть явно преобразовано в тип T2 с помощью const_cast, если, учитывая cv-разложения обоих типов, каждое P i 1 совпадает с P i 2 для всех i ....
120 просмотров
schedule 24.04.2022