MyClass(const int& i, const float& f) : i_(i), f_(f) {}
private:
const int i_;
float f_;
};
Из-за того, что i_ является константным мы не можем призваивать объектам этого класса другие объекты этого класса:
MyClass myObject(1, 2.0f);
myObject = anotherObject; // WRONG
А в чём смысл? Почему не считается, что, приcваивая другой объект, мы заменяет текущий полностью и поэтому константные члены класса допустимо заменяются?
Получается, что если мы делаем хотя бы один член класса константным, то мы лишаемся возможности копировать объекты этого класса?
Зачем в конструктор по ссылке передавать инты?
что значит заменяем полностью?
Для такого вроде бы mutable применять можно
> а в чем смысл А как ты себе представляешь результат этого присваивания? Присвоятся все поля, кроме константных? Это не особо интуитивно понятно, и хорошо, что стандарт не сделал это дефолтом. Если очень нужно, подоюное поведение можно прописать самому
Ну, вот так получилось, зато есть copy constrictor
Да, это так. Так не делай член const, тебя же никто не заставляет его менять, если он не const...
Обсуждают сегодня