Приведение типов

Рейтинг: 0Ответов: 1Опубликовано: 10.06.2011

Верно ли делать константное приведение ссылки?

void func( const ISomeAbsClass & param) {
    ISomeAbsClass someAbsClass = const_cast<ISomeAbsClass &>(param);
    ...
}

Ответы

▲ 3

Такое приведение как у вас не имеет смысла, т.к. после приведения все равно происходит вызов конструктора копирования, который обычно имеет вид A(const A& a). Чтобы изменить объект на который ссылается param, надо сделать так:

ISomeAbsClass& someAbsClass = const_cast<ISomeAbsClass &>(param);
someAbsClass.someNonConstantMethod();

Стоит помнить, что почти всегда необходимость в const_cast возникает при плохом проектировании программы и его можно избежать.