При перегрузке = возможно ли изменить правый операнд если он передан по константной ссылке

Почему допускается изменить правый операнд в оператора равно, то есть работает это: ++*h.use; Правый операнд является константной ссылкой и не может использовать модифицирующие операторы типа ++.

H& H::operator=(const H& h) {
    ++*h.use;
    if (--*use == 0) {
        delete ps;
        delete use;
    }

    ps = h.ps;
    i = h.i;
    use = h.use;
    return *this;
}


Ответы (1 шт):

Автор решения: Harry

Здесь вы никак не меняете сам объект h, а меняете значение, на которое указывает его член-указатель use. Оператор инкремента применяется к разыменованному указателю *h.use.

Вот если бы объявили use как указатель на константное значение — тогда дело другое. Сейчас же константность h не под угрозой :)

→ Ссылка