继承和派生

1.继承和派生的概念

继承:定义新的类B时,如果B与已有类A相似(B有A全部特点),那么可以把 A作为基类,B作为基类的派生类(子类);派生类可以对基类进行修改或扩充,派生类中,可扩充新的成员变量和成员函数;派生类定义后,可以独立使用,不依赖于基类。
注意:派生类拥有基类全部的成员函数和成员变量,包括private、protected、public; 在派生类的各个 成员函数中,不能访问基类中private成员

2.派生类格式

class  派生类名: public 基类名
{
……
};

3.派生类对象的内存空间

派生类对象包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员变量之前

4.实例程序:学籍管理

#include <iostream>
#include <string>
using namespace std;

class CStudent {
private:
	string name;
	string id;//学号
	char gender;//'F'代表女,'M'代表男
	int age;
public:
	void PrintInfo();//打出信息
	void SetInfo(const string &name_, const string &id_, int age_, char gender_);//设置信息
	string GetName() {
		return name;
	}
};
void CStudent::PrintInfo()
{
	cout << "name:" << name << endl;
	cout << "id:" << id << endl;
	cout << "age:" << age<< endl;
	cout << "gender:" << gender << endl;
}
void CStudent::SetInfo(const string &name_, const string &id_, int age_, char gender_)//设置信息
{
	name = name_;
	id = id_;
	age = age_;
	gender = gender_;
}
class CUndergraduateStudent :public CStudent//本科生类继承了CStudent类
{
private:
	string department;//学生所在系
public:
	void QualifiedForBaoyan() {
		cout << "Qualified For Baoyan" << endl;
	}
	void PrintInfo()//在基类基础扩充
	{
		CStudent::PrintInfo();//调用了基类成员函数
		cout << "Department:" << department << endl;
	}
	void SetInfo(const string &name_, const string &id_, int age_, char gender_, const string &department_)
	{
		CStudent::SetInfo(name_, id_, age_, gender_);
		department = department_;
	}
};
int main()
{
	CUndergraduateStudent s2;
	s2.SetInfo("Frank","1131205",24,'M',"Computer Science");
	cout << s2.GetName() <<" ";
	s2.QualifiedForBaoyan();
	s2.PrintInfo();
	return 0;
}
输出:
Frank Qualified For Baoyan
name:Frank;
id:1131205
age:24
gender:M
Department:Computer Science




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值