behaviour de const_cast

Eu estava lendo sobre o operador const_cast em c ++

1.Primeira coisa estranha que eu não consigo entender é

intaxe do operador @const_cast, ou seja,

-const_cast-- <--Type--> - (- expression -) --------------------> <

O que eu entendi sobre essa sintaxe é que ela ajuda a eliminar a constância de umexpression do tipoType .Mas considere este código

class  ConstTest {   

private:
    int year;
public:
    ConstTest() : year(2007) {}
    void  printYear() const;
};

int main() {
    ConstTest c;
    c.printYear();
    return  0;
}

void ConstTest::printYear() const {
    ConstTest  *c  = const_cast<ConstTest*>(this);
    c->year  = 42;
    std::cout  <<  "This  is the  year "  << year  << std::endl;
}

Aqui está na linhaConstTest *c = const_cast<ConstTest*>(this), Acho que a const dethis ponteiro deve ser descartado, mas a saída mostra que é o objeto quethis refere-se a que perde sua consistência.

Sinto que o código deveria ter sidoConstTest *c = const_cast<ConstTest>(*this), mas isso produz um erro. Eu sei que estou errado em muitas interpretações. Corrija todos eles.

2. meu segundo problema é a declaração abaixo

O resultado de uma expressão const_cast é um rvalue, a menos que Type seja um tipo de referência. Nesse caso, o resultado é um valor l.

Por que é isso e por que não é verdade no caso de ponteiro

questionAnswers(2)

yourAnswerToTheQuestion