初学C++

简单的继承

继承方式 :public(公有基类),private(私有基类)和protected(保护基类)
单继承的定义格式:
class 派生类名继承方式 基类名
{
派生类的函数和成员
};
若派生类对基类的函数进行了改写,那么基类函数前面必须加上virtual关键字,但基类的析构函数必须是virtual的
可以使用初始化列表进行赋值,格式:函数名(参数1,参数2……):值1,值2……对于非内建类型来说,初始化列表效率更高
因为派生类继承了基类的成员和方法,所以派生的对象可以调用基类中的成员和方法,(如案例中的cout<<d.getNumber()<<endl;)派生类也可以新增一些成员和方法(如:d.hello();)
简单的案例

#include<iostream>
using namespace std;
//定义一个基类
class Base
{
public:
    Base()//默认构造(无参构造)
    {
		m_bnumber=0;
		cout<<"Base() is called"<<endl;
	}
	Base(int i)//普通构造(有参构造)
	{
		m_bnumber=i;
		cout<<"Base(i) is called"<<endl;
	}
	/*或者使用初始化列表
	Base(int i):m_bnumber(i)
	{
		
	}
	*/
	//基类的析构函数必须是virtual的
	virtual ~Base()
	{
		cout<<"~Base() is called"<<endl;
	}
public:
    int getNumber()
	{
		return m_bnumber;
	}
	
	virtual void Print()
	{
		cout<<m_bnumber<<endl;
	}
private:
    int m_bnumber;

};
//派生类
class Derived:public Base
{
public:
    Derived():Base(),m_dnumber(0)
	{
		cout<<"Derived() is called"<<endl;
	}
	Derived(int x,int y):Base(x),m_dnumber(y)
	{
		/*或者在函数中赋值
		Base(x);
		m_dnumber=y;
		*/
		cout<<"Derived(int x,int y) is called"<<endl;
	}
	~Derived()
	{
		cout<<"~Derived() is called"<<endl;
	}
public:
    void Print()
	{
		Base::Print();
		cout<<m_dnumber<<endl;
	}
	void hello()
	{
		cout<<"hello world"<<endl;
	}

private:
    int m_dnumber;
};
int main()
{
	Derived d(5,2);
	cout<<d.getNumber()<<endl;
	d.Print();
	d.hello();
	
	return 0;
}

运行结果
从运行的结果可以看出构造和析构的顺序为:基类构造–>派生类构造–>派生析构–>基类析构 在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值