类中的函数分类与虚函数的原理
来源:互联网 发布:怎么清除dnf异常数据 编辑:程序博客网 时间:2024/06/06 05:52
类中函数分为3类:
构造函数:不可以虚化(重写),在子类的构造函数前自动被调用一次父类的构造函数.
析构函数:当[DELETE]类指针时 非虚会从[此类]一直释放到基类,为虚时会从被赋于的[NEW类]的析构函数一直释放到基类.
总得来说释放[方向]都是从[子类]到[父类],只是开始释放的位置不一样.这就是为什么基类的析构函数要虚化的原因.
如[虚 A::F] [B类中不重写] [虚 C::F] 当 A* a = NEW C; a->F()是C类的.
如[虚 A::F] [虚 B::F] [C类中不重写]当 A* a = NEW C; a->F()是B类的.
如[虚 A::F] [C类中不重写] [C类中不重写]当 A* a = NEW C; a->F()是A类的.
构造函数:不可以虚化(重写),在子类的构造函数前自动被调用一次父类的构造函数.
析构函数:当[DELETE]类指针时 非虚会从[此类]一直释放到基类,为虚时会从被赋于的[NEW类]的析构函数一直释放到基类.
总得来说释放[方向]都是从[子类]到[父类],只是开始释放的位置不一样.这就是为什么基类的析构函数要虚化的原因.
普通函数:为虚时表示派生类可以[重写]这个函数,
以下的关系是A派生B派生C
如[虚 A::F] [虚 B::F] [虚 C::F] 当 A* a = NEW C; a->F()是C类的.如[虚 A::F] [B类中不重写] [虚 C::F] 当 A* a = NEW C; a->F()是C类的.
如[虚 A::F] [虚 B::F] [C类中不重写]当 A* a = NEW C; a->F()是B类的.
如[虚 A::F] [C类中不重写] [C类中不重写]当 A* a = NEW C; a->F()是A类的.
如[非虚 A::F] [非虚 B::F] [非虚 C::F] 当 A* a = NEW C; a->F()是A类的.
具体工程代码教程可以在这里下载: 下载地址
阅读全文
0 0
- 类中的函数分类与虚函数的原理
- 虚函数与虚析构函数原理
- 虚函数的原理
- 虚函数的原理
- 虚函数原理与应用
- 分类算法中的损失函数
- python中的函数原理
- 解析构造函数与析构函数中 调用虚函数的原理
- SQL函数的分类
- 构造函数的分类
- 函数的分类
- 55-函数的分类
- 聚合函数的分类
- C++中的虚函数与函数重载
- C++与C#中的虚函数、纯虚函数、抽象类的对比
- 派生类的构造函数和析构函数和多继承中的二义性与虚函数
- C++中虚函数的原理与实现
- 多重继承与虚函数表的实现原理
- hdu 2036多边形面积
- 内存泄漏
- Prepared for New Acmer
- 模板匹配源码
- 添加元素(数组开头)
- 类中的函数分类与虚函数的原理
- Python中有用的三个工具:dir, type和help
- 图形学相关的论文和源码
- 多线程下载Demo
- h5缓存
- Myeclipse中编码的问题,一个项目存在多种编码,修改指定类型文件的编码
- MySql出现错误:ERROR 1055 (42000) 和 MYSQL的WARNINGS 和 ERRORS查询细节
- python project 编译Linux的可执行版本-pyinstaller
- 编程路上怎么才能轻松的走