调用基类中定义的函数

时间:2017-01-25 14:32:15

标签: c++

我有两个简单的c ++类:

class base {
protected:
  double a ;
public:
  double getValue(void) { return a ; }
  double getValue2(void) { return 2*this->getValue() ; }
} // end class base

class derived : public base {
private:
  double b ;
public:
  double getValue(void) { return a+b ; }
}  // end class derived

然后我打电话给

  derived A ;
  A.getValue2() ;

问题是,方法getValue2()从基类(而不是派生类)调用方法getValue()。是否可以从派生类中调用getValue2()函数getValue(),还是需要在派生类中重新定义getValue2()

2 个答案:

答案 0 :(得分:5)

您需要做的就是在基类中创建window.Detail = Detail; csv = CSV.read(csvtoopen, :headers=>true, quote_char: '"', encoding: "bom|utf-8")

getValue

那个函数在整个类结构中将是virtual(不需要在子类中重复关键字,尽管有些人为了清晰起见而这样做。)

与Java不同,virtual double getValue(void) { return a ; } - ness不是自动的。

答案 1 :(得分:2)

将基本方法标记为虚拟,将衍生方法标记为覆盖

class base {
protected:
  double a ;
public:
  virtual double getValue(void) { return a ; }
  double getValue2(void) { return 2*this->getValue() ; }
};

class derived : public base {
private:
  double b ;
public:
  double getValue(void) override { return a+b ; }
};