C++ 多态性示例:虚函数和非虚函数的调用
以下程序演示了C++中的多态性,运行程序后,屏幕上将显示输出()。
#include<iostream>
using namespace std;
class A {
public:
virtual void funcl() {
cout'A1';
}
void func2() {
cout'A2';
}
};
class B:public A {
public:
void func1() {
cout'B1';
}
void func2() {
cout'B2';
}
};
int main() {
A *p=new B;
p->funcl();
p->func2();
return 0;
}
A. B1B2 B. A1A2 C. B1A2 D. A1B2
正确答案:C
解释:
- 在
main函数中,我们创建了一个指向B类对象的A类指针p,这是多态的一种体现。 - 当调用
p->funcl()时,由于funcl()是虚函数,因此会根据p所指向的实际对象的类型来确定调用哪个版本的funcl()。由于p指向的是B类对象,因此调用的是B类中的funcl(),输出为B1。 - 当调用
p->func2()时,由于func2()不是虚函数,因此会根据p所声明的类型来确定调用哪个版本的func2(),即A类中的func2()。因此输出为A2。
总结:
由于虚函数的动态绑定特性,程序输出为B1A2,即选项C正确。
原文地址: https://www.cveoy.top/t/topic/oLVg 著作权归作者所有。请勿转载和采集!