C ++派生类方法调用

时间:2017-04-22 18:21:44

标签: c++

我正在尝试让我的派生类调用myC和myB版本的print()方法。我将从myA类型的指标对象调用这些方法。我如何在C ++中执行此操作?

#include <iostream>
using namespace std;

class myC
{
public:
  myC()  { }
  void print()
  {
    cout<<"Class C print."<<endl;
  }
};

class myB: myC
{
public:
  myB()  { }
  void print()
  {
    cout<<"Class B print."<<endl;
  }
};

class myA: myB
{
public:
  myA()  { }
  void print()
  {
    cout<<"Class A print."<<endl;
  }
};

int main()
{
    myA indicator();
    indicator.print();
    return 0;
}

2 个答案:

答案 0 :(得分:2)

首先,您需要继承使用某些访问说明符,例如public protected private

将您的继承更改为

class myB:public myC
{
....
}

class myA:public myB
{
....
}

现在main使用他们的班级名称

打电话给他们
int main()
{
    myA indicator;
    indicator.print();
    indicator.myB::print();  //Note that indicator is object of only 
    indicator.myC::print();  //class myA but access myB,myC's print
    return 0;
}

注意如果您使用public访问说明符继承,则可以调用这些函数,因为继承使用public意味着您可以访问类外的这些函数,因此可以在main或课堂外的任何地方调用这些函数。  protected请参考Kerek回答。

  

输出

Class A print.
Class B print.
Class C print.

答案 1 :(得分:0)

像这样:

void myA::print()
{
    cout<<"Class A print."<<endl;
    myB::print();
    myC::print();
}

这要求可以从派生类访问基类,即必须将它们作为受保护或公共派生。