C++面向对象基类构造和析构函数详解

C++面向对象基类构造和析构函数详解

一、导述

面向对象是c++一定要掌握的知识。而其中常用的就是多态。本文讲述的内容主要就是基类的构造函数和析构函数相关。

二、基类的析构函数

为什么先说析构函数,是因为这点更容易被忽略。
要注意:基类的析构函数一定要声明成虚函数
因为一个派生类对象被析构时,首先调用基类的析构函数,如果此时基类的析构函数不是虚函数,那编译器就不会在虚函数表中去寻找派生类重写的析构函数,就会导致派生类的内存释放不干净,从而导致内存泄漏。

三、基类的构造函数

在c++中基类的构造函数是不会被派生类重写的。
可以将派生类的对象赋值给基类对象,此时基类对象的指针可以调用基类方法,如果基类方法声明成了虚函数,则也可以调用派生类中的方法。基类的指针不能直接调用派生类中未在基类中声明的虚函数方法

#include <iostream>
using namespace std;

class A {
public:
	A() { cout << "A的构造" << endl; }
	virtual ~A() { cout << "A的析构" << endl; };
	virtual void Work()
	{
		cout << "A工作" << endl;
	}
};//基类

class B :public A {
public:
	B() { cout << "B的构造" << endl; }
	~B() { cout << "B的析构" << endl; }
	void Work() { cout << "B工作" << endl; }
}; //派生类

int main()
{
	A* p = new B;  //派生类对象赋给基类指针
	p->Work();//此时调用的是派生类的成员函数,因为基类的成员函数声明成了虚函数
	delete p;
	system("pause");
	return 0;
}

运行结果:
A的构造
B的构造
B工作
B的析构
A的析构

以上就是本文的全部内容,如果不足之处,请批评指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值