如何从C ++中的父类继承方法

时间:2010-04-17 16:39:41

标签: c++ polymorphism

在C ++中继承类时,我理解成员是继承的。但是如何继承这些方法呢?

例如,在下面的代码中,我希望方法“getValues”不仅可以通过CPoly访问,还可以通过任何继承它的类访问。所以可以直接在CRect上调用“getValues”。

class CPoly {
  private:
    int width, height;
  public:
    void getValues (int* a, int* b)
      { *a=width; *b=height;}
  };

class CRect: public CPoly {
  public:
    int area ()
      { return (width * height); }
  };

换句话说,有没有办法继承简单通用方法的方法,比如getter和setter?

2 个答案:

答案 0 :(得分:5)

可以使用getValues来呼叫CRect,因为getValues是继承的。术语“方法”不是由C ++定义的。如果引用非静态成员函数 - 它们是成员并且继承到派生类。

您的错误不是getValues未被继承,而是您尝试访问无法访问的成员widthheight

答案 1 :(得分:0)

一切都是继承的,在这方面成员变量和成员函数之间没有区别。

CPoly中,如果您希望使用您的班级的人查看成员(无论是函数还是变量),请使用public。对于派生自CPoly的类,如果您希望它们能够使用成员(无论是函数还是变量),那么您必须将它们设为publicprotected

在派生类型CRect中,指定基类时,还必须为所有继承成员(无论是函数还是变量)指定默认访问成员。如果您指定public,则public继承的所有成员将保留public。如果您指定protected,则publicprotected继承的所有成员都将为protected。如果您指定private,则所有继承的成员都将成为private