基类为何需要有一个虚析构函数
来源:互联网 发布:ubuntu 标题栏消失 编辑:程序博客网 时间:2024/05/13 12:40
class Brass{private:string fullName;long acctNum;double balance;public:Brass(const string &s = "Nullbody",long an = -1,double bal = 0.0);void Deposit(double amt);virtual void Withdraw(double amt);double Balance() const;virtual void ViewAcct() const;virtual ~Brass() {}};class BrassPlus:public Brass{private:double maxLoan;double rate;double owesBank;public:BrassPlus(const string &s = "Nullbody",long an = -1,double bal = 0.0,double m1 = 500,double r = 0.11125);BrassPlus(const Brass &ba,double m1 = 500,double r = 0.11125);virtual void ViewAcct() const;virtual void Withdraw(double amt);void ResetMax(double m) {maxLoan = m;}void ResetRate(double r) {rate = r;}void ResetOwes() {owesBank = 0;}};为何基类包含了一个虚析构函数,虽然有时好像并不需要析构函数,如果析构函数不是虚的,则将只有调用对应于指针类型的析构函数,对于此程序,只有Brass的析构函数被调用,即使指针指向的是一个BrassPlus对象。如果析构函数是虚的,将调用相应对象的析构函数,因此,如果指针指向的是BrassPlus对象,将调用BrassPlus的析构函数,然后自动调用基类的析构函数,因此,使用虚析构函数可以确保正确的析构序列被调用,虽然此程序对于这种虚析构函数并不是很重要,因为析构函数没有执行任何操作,然而,如果BrassPlus包含一个执行某些操作的析构函数,则Brass必须有一个虚析构函数,即使该析构函数不执行任何操作。
0 0
- 基类为何需要有一个虚析构函数
- 为何需要虚析构函数
- 为何需要核函数
- 为何需要核函数
- 类需要一个虚析构函数吗?
- 为何使用dynamic_cast转换类指针时,需要虚函数?
- SVM(四)为何需要核函数
- C++ 虚析构函数-(一个带有虚函数功能的类,则它需要一个虚析构函数)
- 简析C++为何有“接口”与“函数”
- 为何需要静态类或者静态变量
- SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- [转载]SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- SVM入门(七)为何需要核函数
- 交换类排序-快速排序
- 健康路口了法国告诉他我是人颜如玉已退回件风格的手动
- Post和Get在HttpClient的使用
- 指向学生类的指针
- nodejs常见报错及解决方法
- 基类为何需要有一个虚析构函数
- 楼人人特点如图一人u欧功哟看图好风火锅的风格化是
- symbol(s) not found for architecture armv7
- 新人报道
- 深入浅出Java Dom4j读取XML
- iOS 7 教程:定制iOS 7中的导航栏和状态栏
- 深度优先搜索二叉树递归非递归
- Linux 高可用(HA)集群基本概念详解
- 第六周作业1-利用哈夫曼编码字母表