Вопрос о const_cast в c ++

все: это цитируется из 3-й редакции эффективного C ++

. const_cast обычно используется для отказа от константности объектов. Это единственное приведение типов в стиле C ++, которое может это сделать.

У меня вопрос: может ли const_cast добавить константу неконстантному объекту? На самом деле я написал небольшую программу, пытаясь подтвердить мою мысль.

class ConstTest
{
 public:

 void test() {
    printf("calling non-const version test const function \n");
}

 void test() const{
    printf("calling const version test const function \n");

} 

};
 int main(int argc,char* argv){
 ConstTest ct;
 const ConstTest cct;
 cct.test();
 const_cast<const ConstTest&>(ct).test();//it is wrong to write this statement without the '&',why

}

Отсутствие символа '&' приводит к ошибке ниже:

ошибка C2440: 'const_cast': невозможно преобразовать из 'ConstTest' в 'const ConstTest'

Это показывает что const_cast может добавить константу, но похоже, что вам нужно привести ссылку на объект, в чем волшебство этой ссылки?

9
задан Tracy 27 September 2010 в 11:57
поделиться