Почему в C ++ нет конструктора const?

( Изменить: Сильное изменение, потому что предыдущий пример был ошибочным, из-за чего некоторые ответы / комментарии могут показаться странными)

Это может быть излишне надуманным, но следующее допустимо из-за отсутствия конструктора const:

class Cheater
{
public:
    Cheater(int avalue) 
       : cheaterPtr(this) //conceptually odd legality in const Cheater ctor
       , value(avalue) 
    {}

    Cheater& getCheaterPtr() const {return *cheaterPtr;}
    int value;

private:
    Cheater * cheaterPtr;
};

int main()
{
    const Cheater cheater(7); //Initialize the value to 7

    cheater.value                 = 4;    //good, illegal
    cheater.getCheaterPtr().value = 4;    //oops, legal

    return 0;
}

Похоже, предоставить конструктор const такая же простая вещь технически, как const и аналогичен перегрузке const.

Примечание: я ищу не « Image (const Data & data) const », а скорее « const Image (const Data & data) const '

Итак:

  • Почему конструктор const отсутствует в C ++?

Вот некоторые связанные материалы для контекста:

35
задан michael_heath 15 October 2018 в 00:54
поделиться