继承与派生(1)

前言

继承可以在已有类的基础上创建新的类,新类可以从一个
(或多个)已有类中继承成员函数和数据成员,而且可以重新
定义或加进新的数据成员和函数。
简而言之,基类综合了派生类的公共信息,派生类则在基类
的基础上增加某些特性。

在这里插入图片描述
我们可以举一个使用继承的例子:

#include<string>
#include<iostream>
using namespace std;
class Person{
	private:
		string name;
		int age;
		string id_number;
	public:
		Person(string na,int ag,string id);
		void show();
		~Person();
};
Person::~Person(){
};
Person::Person(string na,int ag,string id){
	name=na;
	age=ag;
	id_number=id;
}
void Person::show(){
	cout<<"\n 姓名:"<<name;
	cout<<"\n 年龄:"<<age;
	cout<<"\n 身份证号:"<<id_number; 
} 
class Student:public Person{
	private:
		int score;
	public:
		Student(string na,int ag,string id,int score1);
		void show();
		~Student();
};
Student::Student(string na,int ag,string id,int score1)
        :Person(na,ag,id) 注意点1
{
	score=score1;
}
Student::~Student(){
}; 
void Student::show(){
	Person::show(); 注意点2
	cout<<"\n 成绩:"<<score;
}
int main(){
	Student stu1("张三",19,"123456",200);
	stu1.show();
	return 0;
}

以下为运行结果:在这里插入图片描述
在这里插入图片描述

从这一段代码中我们可以提出以下几个问题:

  1. 子类是否能访问父类?什么样的子类能访问父类?
  2. 在调用子类的构建、调用、析构函数时,父类是否对此产生影响?

1.基本使用及易错点

基本使用

声明一个派生类的一般格式是:
class 派生类名 :【继承方式】 基类名{ 派生类新增的数据成员和成员函数 }
需要注意的是派生类的析构函数
以上例:
构造函数:

Student::Student(string na,int ag,string id,int score1)
        :Person(na,ag,id) 注意点1
{
	score=score1;
}

访问

派生类可以继承基类中除了构造函数与析构函数之外的成员,但是这些成员的访问属性在派生过程中是可以调整的。从基类继承来的成员在派生类中的访问属性是由继承方式控制的。
①基类中的私有成员。
无论哪种继承方式,基类中的私有成员都不允许派生类继承,即在派生类中是不可直接访问的。
②基类中的公有成员。
都是以继承方式为主,继承方式是什么那么公有成员就会以什么身份出现。
③基类中的保护成员。
**公有继承时,基类中的所有公有成员在派生类中仍是以保护成员的身份出现的。**剩下与上条相同。

访问形式

派生类对基类成员的访问形式主要有两种:
1)内部访问,由派生类中新增的成员函数对基类继承来的成员的访问
2)对象访问,在派生类外部,通过派生类的对象对从基类继承来的成员的访问。
基类成员只可从内部由派生类访问,且私有数据成员永不可被派生类访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值