C++ 虚函数,纯虚函数的一些问题
2024-08-25 23:47:26
#include <iostream>
using namespace std; #define cendl cout << endl; class AA{//这是一个纯虚函数
public :
virtual void fun() = ;
}; class A{
int data_a;
public:
A(){
data_a = ;
cout << "A " ;
}
A(int a){
data_a = a;
cout << "A(a) " ;
}
void show(){
cout << data_a<<' ' ;
}
virtual void fun(){
cout << "this is A ";
}
~A(){
cout << "~A " ;
}
};
class B : public A{
int data_b;
public:
B(){
data_b = ;
cout << "B " ;
}
B(int a, int b) :A(a){
data_b = b;
cout << "B(a) " ;
}
void show(){
A::show();
cout << data_b << ' ';
}
virtual void fun(){
cout << "this is B ";
}
~B(){
cout << "~B " ;
}
};
class C :public A{
int data_c;
public:
C(){ data_c = 3; cout << "C " ; }
C(int a, int b) :A(a){
data_c = b;
cout << "C(a) " ;
}
void show(){
A::show();
cout << data_c << ' ';
}
virtual void fun(){
cout << "this is C ";
}
~C(){
cout << "~C " ;
}
};
int main()
{
A *a1 = new A(2);
cendl;
A *a2 = new B(2,3);
cendl;
A *a3 = new C(2, 3);
cendl;
a1->fun();
cendl;
a2->fun();
cendl;
a3->fun();
cendl;
delete a1;
cendl;
delete a2;
cendl;
delete a3;
system("pause");
return 0;
}
虚函数的作用主要是用作多态,定义一个基类的指针指向子类,可以产生不同的调用效果。如上面的程序输出如下:
可以看出同样是基类的指针但是指向不用的子类是调用的是各个子类的fun函数。同时在delete的时候都是调用A的析构函数,没有调用子类的构造函数,不知道这是为啥。
最新文章
- hihoCoder 1196 高斯消元&#183;二
- Windows 更改桌面位置
- oracle 用户创建这个挺靠谱
- SCI Index
- angular $http配置属性
- 线性回归&;&;code
- ASP.NET Web API 全局权限和全局异常处理
- endsWith和startsWith同样效果其他形式的写法(2016.1.12)
- (转)linux下mysql的安装过程
- java初学的几个问题
- Win7下安装Ubuntu双系统常见问题
- PHPexcel 判断日期类型
- js把通过图片路径生成base64
- ubuntu中gdb调试工具的使用
- 501. Find Mode in Binary Search Tree
- notepad++安装nppFTP
- 【Git】vs code+git 不使用ssh的链接remote server的方式
- java获取当前项目或类路径
- 在Android Native层中创建Java虚拟机实例
- 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结