Вопросы по теме '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 просмотров
schedule
13.10.2022
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 просмотров
schedule
23.05.2022
Неожиданное поведение, связанное с const_cast
Я придумал следующий пример, демонстрирующий неожиданное поведение. Я ожидал, что после push_back все, что есть в векторе, будет там. Похоже, что компилятор каким-то образом решил повторно использовать память, используемую str.
Может ли...
124 просмотров
schedule
24.07.2023
Константное приведение к не-указательному не ссылочному типу
Из [expr.const.cast] / 3 :
Для двух похожих типов T1 и T2 prvalue типа T1 может быть явно преобразовано в тип T2 с помощью const_cast, если, учитывая cv-разложения обоих типов, каждое P i 1 совпадает с P i 2 для всех i ....
120 просмотров
schedule
24.04.2022