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