Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube
Вымышленные особенности указателя this

В Рунете полно сайтов о программировании, в основном там много статей для новичков. Такие сайты могут выглядеть модно, но работа авторов и редакторов (если они вообще есть) часто недотягивает до приличного уровня.

Интересные особенности указателя this

Небольшой, но показательный пример. Автор заявляет, что «this является const указателем».

class Foo {
private:
    int x;
public:
    Foo(int x = 0) {  this->x = x; }
    void change(Foo *foo) { this = foo; }
    void print() { cout << x << endl; }
};

И никого не смутило, что компилятор прямо говорит о причине:

«Если мы запустим (скомпилируем. — DZ) код, то получим ошибку компиляции в методе change (lvalue required as left operand of assignment)».

Тип указателя this — либо Foo*, либо const Foo*. Он не может быть Foo* const или const Foo* const. А присвоить ему ничего нельзя потому, что он не является левосторонним значением (lvalue); по-простому — не может стоять слева от знака присваивания.

Читайте хорошие книги и сайты.

15 февраля
Зарегистрируйтесь и войдите, чтобы оставлять комментарии и голосовать.

Также может быть интересным
© MMXI—MMXXIII. RSS. Поддержать сайт
Светлая тема / тёмная тема