C++ 虚函数与继承:程序输出分析
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
解析:
- 定义了一个基类 A 和派生类 B,B 类继承自 A 类。
- 在 main 函数中,定义了一个指向 A 类对象的指针 p,并用 B 类对象的地址进行初始化。
p->funcl()调用的是 A 类的虚函数funcl()。虽然 B 类重写了该函数,但由于是通过 A 类指针调用,因此调用的是 A 类中的funcl(),输出A1。p->func2()调用的是 A 类的非虚函数func2()。由于 B 类没有重写该函数,因此调用的是 A 类中的func2(),输出B2。
因此,最终的输出结果为 A1B2。
通过本例,我们可以理解虚函数的作用:在运行时动态绑定,根据对象的实际类型来决定调用哪个函数,从而实现多态性。
原文地址: https://www.cveoy.top/t/topic/oLVD 著作权归作者所有。请勿转载和采集!