我有一个C ++问题,我需要将派生类的函数移至基类以“清理”我的代码。这是我要移动的代码:

double Resistor::getVolt()
{
  if (connection_a->getCharge() > connection_b->getCharge())
    return connection_a->getCharge() - connection_b->getCharge();
  else
    return connection_b->getCharge() - connection_a->getCharge();
}
double Resistor::getCurr()
{
  if (connection_a->getCharge() > connection_b->getCharge())
    return (connection_a->getCharge() - connection_b->getCharge())/resistance;
  else
    return (connection_b->getCharge() - connection_a->getCharge())/resistance;
}


我需要移动所有这些内容,并且仍然要使变量connection_aconnection_b成为私有变量。

最佳答案

class Component{
   protected:
   Component *connection_a, *connection_b;
   virtual double getCharge();
   public:
   virtual ~Component();
};


class Resistor : public Component{
   public:
   virtual double getVolt();
   virtual double getCurr();
   virtual ~Resistor();
};


从getVolt()中,您可以自由读取父级的所有非私有字段。您不能从基类直接访问任何派生类的变量。但是,您可以知道基类提供的虚方法,这些虚方法在派生类中被覆盖,因为知道要调用的虚方法取决于实例的类类型。

09-08 01:14