( Изменить: Сильное изменение, потому что предыдущий пример был ошибочным, из-за чего некоторые ответы / комментарии могут показаться странными)
Это может быть излишне надуманным, но следующее допустимо из-за отсутствия конструктора 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
'
Итак:
Вот некоторые связанные материалы для контекста: