【发布时间】:2021-05-18 11:31:44
【问题描述】:
class base{
public:
virtual void foo(){
std::cout << "base::foo was called" << std::endl;;
}
void bar(){
foo();
std::cout << "base::bar was called" << std::endl;;
}
};
class derived : public base {
public:
void foo() {
std::cout << "derived::foo was called" << std::endl;
}
};
int main() {
derived der;
der.bar();
// desired output = "base::foo was called" "base::bar was called"
// actual output = "derived::foo was called" "base::bar was called"
}
我在这里遗漏了什么明显的东西吗?
为什么bar()函数在派生类的对象上调用时调用derived::foo函数,即使函数本身只存在于基类中。
【问题讨论】:
-
我假设您在真实代码中使用
public:。
标签: c++ inheritance virtual