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;
}

输出结果: A1B2

解析:

  1. 定义了一个基类 A 和派生类 B,B 类继承自 A 类。
  2. 在 main 函数中,定义了一个指向 A 类对象的指针 p,并用 B 类对象的地址进行初始化。
  3. p->funcl() 调用的是 A 类的虚函数 funcl()。虽然 B 类重写了该函数,但由于是通过 A 类指针调用,因此调用的是 A 类中的 funcl(),输出 A1
  4. p->func2() 调用的是 A 类的非虚函数 func2()。由于 B 类没有重写该函数,因此调用的是 A 类中的 func2(),输出 B2

因此,最终的输出结果为 A1B2

通过本例,我们可以理解虚函数的作用:在运行时动态绑定,根据对象的实际类型来决定调用哪个函数,从而实现多态性。

C++ 虚函数与继承:程序输出分析

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

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