У меня есть два класса, и я хочу переопределить оператор =.Виртуальное переопределение оператора =
class Composant {
string description;
...
virtual const Composant& operator=(const Composant &c)
{
description = c.description;
return *this;
}
}
А другой наследуется:
class Ecran : Composant {
int format, pitch;
double taille;
...
const Ecran& operator=(const Ecran &e)
{
format = e.format;
taille = e.taille;
pitch = e.pitch;
//traiter composant
Composant::operator=(e);
}
Пример кода в главном:
Composant *p=new Ecran(.....);
Composant *t=new Ecran(.....);
(*p)=*t;
Является ли это правильный способ сделать это?
Я предполагаю, что мы ДОЛЖНЫ поставить определение оператора = в виртуальном, каждый раз, когда у нас есть этот тип наследования? то же для оператора == и т. д.
'operator = (const Composant & c)' и 'operator = (const Ecran & e)' - совершенно разные методы. Обратите внимание, что вы меняете тип параметра, создавая перегруженный оператор. Последнее не перекрывает первое. – dhke
@dhke Функции членов в разных классах не перегружаются. – curiousguy
'Composant * p = new Ecran' не будет компилироваться. Попробуй! – curiousguy