Вопрос знатокам стандарта C++
От: Аноним  
Дата: 04.09.07 12:06
Оценка:
Во многих учебниках встречался с утверждениями типа "константный обьект класса изменить невозможно", но в Visual С++ следующий код срабатывает без проблем:


class A
{
public:
    A() : x(0) {}
        virtual ~A() {}
    int x;
    void ff() { x += 5;}
};

void f(const A& a)
{
    A * pA = const_cast<A *>(&a);
    A& ra = *pA; // this transformation is no needed, 
                    // just for the code appearance
    ra.x = 5;
    ra.ff();
}

int main()
{
        A a;
        cout << a.x  << endl;
        f(a);
        cout << a.x  << endl;

        const A cA;
        cout << cA.x  << endl;
        f(cA);
        cout << cA.x  << endl;
}


Где ошибка: в учебниках? Или Visual C++ 6.0 не соответствует стандарту? Кто — нибудь это знает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.