const указатели и оператор =

class Point {
public:
    Point(int x, int y) : { x = new int(x); y = new int(y) }
    ...
    ...
    Point& operator=(const Point& other) {
        if(this!=&other){
            delete x;
            delete y;
            x = new int(*other.x);
            y = new int(*other.y);
        }
        return *this;
    }
private:
    const int* x;
    const int* y;
}

Будет ли эта реализация operator = работать, даже если x и y этого уже были инициализированы? Удаление указателя const позволяет нам переназначить его?

0
nl ja de
Это не указатель const, а указатель на const.
добавлено автор Luchian Grigore, источник
Это не указатель const, а указатель на const.
добавлено автор Luchian Grigore, источник
Вопрос с одного из предыдущих экзаменов моего курса
добавлено автор TheNotMe, источник
Ян, спасибо, но можете ли вы объяснить, что вы подразумеваете под «самым внутренним типом»?
добавлено автор TheNotMe, источник
Ян, спасибо, но можете ли вы объяснить, что вы подразумеваете под «самым внутренним типом»?
добавлено автор TheNotMe, источник
Ян, спасибо, но можете ли вы объяснить, что вы подразумеваете под «самым внутренним типом»?
добавлено автор TheNotMe, источник
Ой. Как вы объявляете указатель const тогда?
добавлено автор TheNotMe, источник
Ой. Как вы объявляете указатель const тогда?
добавлено автор TheNotMe, источник
Вопрос с одного из предыдущих экзаменов моего курса
добавлено автор TheNotMe, источник
Почему вы держите указатели в первую очередь?
добавлено автор juanchopanza, источник
Правило прост. const идет после тип, который должен быть постоянным. В качестве специального случая const в начале применяется к самому внутреннему типу.
добавлено автор Jan Hudec, источник
Правило прост. const идет после тип, который должен быть постоянным. В качестве специального случая const в начале применяется к самому внутреннему типу.
добавлено автор Jan Hudec, источник
Правило прост. const идет после тип, который должен быть постоянным. В качестве специального случая const в начале применяется к самому внутреннему типу.
добавлено автор Jan Hudec, источник
Пример: int * const x;
добавлено автор Andreas Fester, источник
Пример: int * const x;
добавлено автор Andreas Fester, источник
в качестве примечания: будьте осторожны при динамическом распределении памяти внутри конструктора для сырых указателей. Это не исключение, и может привести к утечке памяти или еще хуже. Всегда используйте интеллектуальные указатели для этой цели и следите за соображениями безопасности.
добавлено автор Sander De Dycker, источник
в качестве примечания: будьте осторожны при динамическом распределении памяти внутри конструктора для сырых указателей. Это не исключение, и может привести к утечке памяти или еще хуже. Всегда используйте интеллектуальные указатели для этой цели и следите за соображениями безопасности.
добавлено автор Sander De Dycker, источник
в качестве примечания: будьте осторожны при динамическом распределении памяти внутри конструктора для сырых указателей. Это не исключение, и может привести к утечке памяти или еще хуже. Всегда используйте интеллектуальные указатели для этой цели и следите за соображениями безопасности.
добавлено автор Sander De Dycker, источник

3 ответы

Это не указатель const , а указатель на const . Таким образом, вы можете изменить указатель, вы не можете указать, на что он указывает.

Указатель const - это

int* const x;

и тогда ваш код не будет компилироваться.

6
добавлено
Ох, спасибо! Извините за мое замешательство!
добавлено автор TheNotMe, источник

Это не указатель const , а указатель на const . Таким образом, вы можете изменить указатель, вы не можете указать, на что он указывает.

Указатель const - это

int* const x;

и тогда ваш код не будет компилироваться.

6
добавлено
Ох, спасибо! Извините за мое замешательство!
добавлено автор TheNotMe, источник

Это не указатель const , а указатель на const . Таким образом, вы можете изменить указатель, вы не можете указать, на что он указывает.

Указатель const - это

int* const x;

и тогда ваш код не будет компилироваться.

6
добавлено
Ох, спасибо! Извините за мое замешательство!
добавлено автор TheNotMe, источник
pro.cxx
pro.cxx
3 049 участник(ов)

C/C++ chat 0. Простые вопросы, лабы и о IDE — в чат новичков @supapro 1. Не хамим, не переходим на личности, не вбрасываем утверждения без доказательств 2. No Ads, offtop, flood Объявления о вакансиях и евенты - в лс @AlexFails https://t.me/ProCxx/259155

supapro.cxx
supapro.cxx
1 925 участник(ов)

Чат для тех, кто немного знает C++, простые вопросы по реализации, синтаксису и ide – сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac

C++ Russia
C++ Russia
384 участник(ов)

Сообщество разработчиков C++ в Telegram.

cxx.Дискуссионная
cxx.Дискуссионная
298 участник(ов)

это не двач, общайтесь вежливо; разговор на почти любые темы; Не согласны с баном? В лс @AlexFails, @ivario

C++ для маленьких и тупых
C++ для маленьких и тупых
105 участник(ов)

Лоу левел (по среднему IQ участников) чатик ExtremeCode @extremecode Флудилка @extremecode_rest