Были попытки улучшить понимание виртуальных функций. Ради аргумента, скажем, у меня есть базовый класс:C++ Функции, вызывающие виртуальные функции внутри
class Shape
{
protected:
string _name;
int _num;
public:
Shape();
virtual double CalcShape();
};
и 2 нижних классов:
class Rectangle : public Shape
{
private:
double _height;
double _width;
public:
Rectangle();
Rectangle(double, double);
double GetHeight();
double GetWidth();
double CalcShape(double, double); //calculates rectangle
};
class Triangle : public Shape
{
private:
double _side1;
double _side2;
double _side3;
public:
Triangle();
Triangle(double, double, double);
double GetSide();
double CalcShape(double, double, double); //calculates triangle
};
Say У меня также есть функция под названием ShowCalc(Shape&);
. Эта функция вызывает функцию CalcShape()
.
void ShowCalc(Shape& sh)
{
return sh.CalcShape();
}
Теперь есть способ получить эту функцию CalcShape()
принимать ввод GetSide()
функции Оба треугольника и прямоугольника GetHeight()
и GetWidth()
видя, как треугольник принимает 3 параметра и Прямоугольник занимает 2?
Просто избавиться от параметров. 'CalcShape' им не нужны, они уже являются переменными-членами. –
@PeterWood: если эта функция действительно является сеттером ('CalcShape (2,4)' может означать в каком-то странном дизайне: 'setWidthHeight (2,4)') –