以下程序演示了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正确。

C++ 多态性示例:虚函数和非虚函数的调用

原文地址: https://www.cveoy.top/t/topic/oLVg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录