如何在具有相同函数名的派生类中调用基类的函数[重复]

Posted

技术标签:

【中文标题】如何在具有相同函数名的派生类中调用基类的函数[重复]【英文标题】:How do you call a function of a base class inside a derived class with same function names [duplicate] 【发布时间】:2020-03-22 11:35:56 【问题描述】:

我试图在派生类中调用与基类中存在的同名的函数。该函数只是打印类元素。 例如:

class A                             // Base Class
                                    
public:                          
     string a;
     int b;

     A();                         //Default Constructor                         
     A(string x,int y):a(x),b(y)  //Parametrized Constructor
     ~A();                        //Destructor
     void printInfo()
     
        cout << a << endl;
        cout << b << endl;
     ;     
;

class B:public A                    // Derived Class
                                    
public:                          
     string c;


     B();                         //Default Constructor                         
     B(string z):c(z)             //Parametrized Constructor
     ~B();                        //Destructor
     void printInfo()
     
        cout << a << endl;
        //I am trying to call printInfo of A inside this function
     ; 
;

所以在输出中,当我创建B 的对象(比如说B example;)并尝试使用B 类的printInfo() 成员函数(例如:example.printInfo();)时,我会先打印c然后是 a 和 b。此外,它不限于 2 个类,而是 5 个以上具有共同 printInfo() 成员函数的类。我如何做到这一点?

【问题讨论】:

您的printInfo 需要返回类型。然后你就做A::printInfo() @MichaelKenzel 抱歉,我的成员函数的类型就不说了。这是一个void 函数,所以它不返回任何东西。我更新了代码。 【参考方案1】:

//我试图在这个函数内部调用A的printInfo

class B:public A                    // Derived Class
                                    
public:                          
     string c;


     B();                         //Default Constructor                         
     B(string z):c(z)             //Parametrized Constructor
     ~B();                        //Destructor
     printInfo()
     
        cout << a << endl;
        A::printInfo();  //<-- call base class version
     ; 
;

【讨论】:

以上是关于如何在具有相同函数名的派生类中调用基类的函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

派生类中具有相同名称但不同签名的函数

虚函数和基类中的this指针的问题!

在其派生类C++的构造函数中调用基类的构造函数[重复]

C ++:如何在派生类中定义基类构造函数,如果基构造函数具有带有私有成员的初始化列表[重复]

调用派生类的构造函数在基类的构造函数之前执行

初学C++之虚函数及抽象类