虚函数的理解
来源:互联网 发布:淘宝网怎么修改密码 编辑:程序博客网 时间:2024/04/30 08:40
#include<iostream>using namespace std;class A{public: A(){ cout<<" A create\n";};virtual ~A(){ cout<<"A delete\n";};virtual void print(){ cout<<"This is A\n"; }};class B:public A{public:B(){ cout<<" B create\n";};~B(){ cout<<"B delete\n";};void print(){ cout<<"This is B\n";}};int main(){A * p1 = new A; A * p2 = new B; p1->print(); //Ap2->print(); //Bdelete p1;delete p2;system("pause");return 0;}
之前对虚函数一直一知半解,现在把总结的内容记录下来。C++的面向对象的一个特征就是多态,即一切用指向基类的指针来操作对象。指向基类的指针在操作它的多态时,会根据不同对象,调用其相应的函数,前提是这些函数都是虚函数。派生类指针调用派生类对象的时候则是正常的情况。
以上代码执行的结果如下:
A createA createB createThis is AThis is BA deleteB deleteA delete
可以总结的知识点:1.如果为虚函数,派生类会覆盖基类的所对应的函数实现。2. 虚析构函数则不会被覆盖,即delete 基类对应的派生类指针时,先调用派生类的析构函数,再调用基类的虚析构函数。3. 构造函数不能定义为虚函数。
此时如果生成A a, B b,同时sizeof(a),sizeof(b),结果为4,这是因为虚函数内部实现使用指针,而将virtual去掉的话,结果都是1。
0 0
- 虚函数的理解
- 虚函数的理解
- 虚函数的理解
- 虚函数的理解
- 虚函数的深入理解
- 对虚函数的理解
- C++的虚函数理解
- 对虚函数的理解
- 关于虚函数的理解
- c++ 虚函数 的理解
- 对于虚函数的真切的理解
- 虚函数中“虚”的理解
- 关于多态性和虚函数的理解
- 关于C++虚函数自己的理解
- C++虚函数这玩意儿的理解
- C++虚函数的深入理解
- C++虚函数的深入理解
- 对C++虚函数的理解
- Android上下布局
- LINUX php 开发Web Service
- lua mac环境搭建
- 对话框样式的Activity
- Asterisk 学习进阶 2
- 虚函数的理解
- GBDT(MART)概念简介
- Linux/Unix服务端和客户端Socket编程入门实例(含源码下载)
- test
- 自己动手开发编译器(六)上下文无关语言和文法
- C标准库stdio源码分析
- SQL分页实现
- Unix Networking Programming的源码编译问题
- Android之Broadcast详解