我可以调用从 main() 覆盖的虚拟函数吗?

Can I call a virtual function that is overridden from main()?

本文关键字:虚拟 函数 覆盖 调用 main 我可以      更新时间:2023-10-16

我知道这个


// C++ program for function overriding 
#include <bits/stdc++.h> 
using namespace std; 
class base 
{ 
public: 
virtual void print () 
{ cout<< "print base class" <<endl; } 
void show () 
{ cout<< "show base class" <<endl; } 
}; 
class derived:public base 
{ 
public: 
void print () //print () is already virtual function in derived class, we could also declared as virtual void print () explicitly 
{ cout<< "print derived class" <<endl; } 
void show () 
{ cout<< "show derived class" <<endl; } 
}; 
//main function 
int main()  
{ 
base *bptr; 
derived d; 
bptr = &d; 
//virtual function, binded at runtime (Runtime polymorphism) 
bptr->print();  
// Non-virtual function, binded at compile time 
bptr->show();  
return 0; 
} 

我可以打印

print derived class
show base class
show derived class

我可以打印吗

print base class

使用派生类的对象d,只需更改main()而不创建另一个对象? 如果是,如何?

我可以使用派生类的对象d打印基类,只需更改main()

是的,你可以。您必须在调用中显式使用基类。

bptr->base::print();  

您也可以直接使用d

d.base::print();