C++中调用子类时,子类没有对应的函数,会自动调用父类的吗?

在C++中,如果子类没有对应的函数(即子类没有重写(override)父类的函数),而您尝试在子类对象上调用该函数,C++不会自动调用父类的函数。相反,它会引发编译错误或运行时错误,具体取决于情况。

以下是一个示例,说明了这种情况:

#include <iostream>

class ParentClass {
    
    
public:
    void showMessage() {
    
    
        std::cout << "ParentClass message" << std::endl;
    }
};

class ChildClass : public ParentClass {
    
    
    // 子类没有对 showMessage() 函数进行重写
};

int main() {
    
    
    ChildClass childObj;
    childObj.showMessage(); // 这将调用父类的 showMessage() 函数
    return 0;
}

在上面的示例中,ChildClass继承了ParentClass,但没有对showMessage()函数进行重写。当我们创建ChildClass对象并调用showMessage()方法时,它会自动调用父类的showMessage()方法。

如果您希望子类覆盖父类的方法,您需要在子类中显式重写该方法,并使用override关键字来确保正确的重写。如果没有正确重写,C++编译器通常会发出警告或错误。

class ChildClass : public ParentClass {
    
    
public:
    void showMessage() override {
    
    
        std::cout << "ChildClass message" << std::endl;
    }
};

在这种情况下,当您在ChildClass对象上调用showMessage()方法时,它将调用子类的重写版本而不是父类的版本。

猜你喜欢

转载自blog.csdn.net/qq_42244167/article/details/132534820
今日推荐