在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()
方法时,它将调用子类的重写版本而不是父类的版本。