Реферат: Методы программирования в C++
{double d1,d2;
getdim(d1,d2);
return d1*d2;
}
};
class triangle: public area
{ public:
double getarea()
{double d1,d2;
getdim(d1,d2);
return 0.5*d1*d2;
}
};
int main()
{area *p;
rectangle r;
triangle t;
r.setarea(3.3,4.5);
t.setarea(4.0,5.0);
p=&r;
cout<< “Площадьпрямоугольника:”<<p->getarea()<<’\n’;
p=&t;
cout<< “Площадьтреугольника:”<<p->getarea()<<’\n’;
return 0;
}
Теперь то, что функция getarea() является чистой виртуальной, гарантирует ее обязательную подмену в каждом производном классе.
4. Виртуальные классы
При таком наследовании может возникнуть проблема в наследовании двух экземпляров полей класса A в классе D через B и C (будет занята лишняя память и возникнет путаница). Чтобы это избежать, нужно при создании B и C объявить класс виртуальным.
class B : virtual public A
{… }