C++虚函数
2015-08-15 18:22
260 查看
虚函数是因为基类和派生类的特殊关系才产生的
使用方式是直接在函数名前加 virtual
主要作用是使派生类用自己的fun函数,而不是用基类的fun函数(fun函数只是举例)。
因为基类的函数先产生而派生类的需求是后产生的,这两者有一个年代差,所以基类的fun函数满足不了派生类的需求,要派生类自己定义一个fun函数来代替它。在写基类的时候,在特定函数的前面加上virtual,可以使派生类调用自己的fun函数,而不是基类的。这样实现了功能的进步和多样性。
纯虚函数 virtual void fun() = 0; 不需要写关于纯虚函数的定义,该函数也不能被调用。其实它只是把这个名称继承到子类,然后再由子类进行定义。
这样做是因为这个函数在不同的派生类有不同的实现方法,基类用不到它。
把基类的析构函数设为虚函数,这很好理解,写子类的析构函数时不需要再写virtual。
有个例子:
假设Derived类是Base的派生类,并且类Base的析构函数被标记为virtual。
那么在delete的时候,程序会先调用Derived的析构,再调用Base的析构。
使用方式是直接在函数名前加 virtual
主要作用是使派生类用自己的fun函数,而不是用基类的fun函数(fun函数只是举例)。
因为基类的函数先产生而派生类的需求是后产生的,这两者有一个年代差,所以基类的fun函数满足不了派生类的需求,要派生类自己定义一个fun函数来代替它。在写基类的时候,在特定函数的前面加上virtual,可以使派生类调用自己的fun函数,而不是基类的。这样实现了功能的进步和多样性。
纯虚函数 virtual void fun() = 0; 不需要写关于纯虚函数的定义,该函数也不能被调用。其实它只是把这个名称继承到子类,然后再由子类进行定义。
这样做是因为这个函数在不同的派生类有不同的实现方法,基类用不到它。
把基类的析构函数设为虚函数,这很好理解,写子类的析构函数时不需要再写virtual。
有个例子:
Base *pBase = new Derived; . . . delete pBase;
假设Derived类是Base的派生类,并且类Base的析构函数被标记为virtual。
那么在delete的时候,程序会先调用Derived的析构,再调用Base的析构。
相关文章推荐
- C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器
- C++基础---运算符
- Binary Tree Level Order Traversal
- 函数的重写,重载
- 一起talk C栗子吧(第三十六回:C语言实例--螺旋矩阵)
- 选择排序(C++版)
- [LeetCode] 032. Longest Valid Parentheses (Hard) (C++)
- A*算法
- 排序算法_C++(二)插入排序之折半插入排序
- Trie树 c++实现
- C语言各章节的难易程度
- poj 1484 Blowing Fuses
- C++: 复制构造函数
- C++ ofstream和ifstream详细用法
- C++中的运算符重载
- 【六】C & C++ 函数相互调用
- Accelerated C++ 学习笔记1
- sscanf,snprintf,sprintf小结
- C++ bitset类的使用与简介
- 贪心算法之ian Ji -- The Horse Racing