派生类与继承
1.继承方式
private私有(默认)
public公有
protect保护
2.声明派生类的一般格式
class 派生类名:【继承方式】基类名{
派生类新增的数据成员和成员函数};
3.基类成员在派生类中的访问属性
基类中的私有成员不允许派生类继承
基类中的保护成员,当继承方式为私有继承时,基类中所有保护成员在派生类中都以私有成员身份出现
4.派生类对基类成员的访问规则
示例如下:
学生类 – 保护继承People
描述
在下面编辑器中的Begin-End之间补充代码,设计 Student 类,并实现 Set 、PrintName 和 PrintAge 函数,具体要求如下:
Student 类公有成员函数:void PrintAge(),函数输出成员变量 Age 的值,输出格式为:年龄:Age。
友元函数:Set(string name,int age, Student *ptr),它用前两个参数设置 ptr 对象的 Age 和 Name(继承 People 拥有的属性)属性值。
现在已有一个基类 People,它有一个保护成员变量姓名 Name,一个公有成员函数 PrintName(函数的功能是打印出 Name 的值)。
程序代码如下:
#include
#include
using namespace std;
//基类People
class People {
protected:
string Name;
public:
void PrintName();
void setName(string name) {
Name = name;
}
};
void People::PrintName() {
cout << “姓名:” << Name << endl;
}
/********** Begin */
//保护继承 People
class Student {
private:
int Age;
public:
void PrintAge();
void PrintName();
friend void Set(string, int, Student );
};
/ End **********/
void Student::PrintAge() {
/********* Begin *********/
//输出 Age
/********* End *********/
}
void Student::PrintName() {
/********* Begin *********/
//调用基类People的成员函数输出 Name
/********* End *********/
}
//友元函数
void Set(string name, int age, Student ptr) {
/******** Begin *********/
//给 ptr 对象的两个属性赋值
/********* End *********/
}
//主函数
int main() {
int age;
string name;
cin >> name >> age ;
Student st;
Set(name, age, &st);
st.PrintName();
st.PrintAge();
}
输入
输入学生的姓名、年龄。
输出
输出学生的信息。
输入输出示例
示例 1
输入
厉宏富 18
输出
姓名:厉宏富
年龄:18
#include <iostream>
#include <string>
using namespace std;
class People {
protected:
string Name;
public:
void PrintName();
};
void People::PrintName() {
cout << "姓名:" << Name << endl;
}
class Student :public People {
private:
int Age;
public:
void PrintAge();
friend void Set(string, int, Student*);
};
void Student::PrintAge() {
cout << "年龄:" << Age << endl;
}
void Set(string name, int age, Student* ptr) {
ptr->Age = age;
ptr->Name = name;
}
int main() {
int age;
string name;
cin >> name >> age;
Student st;
Set(name, age, &st);
st.PrintName();
st.PrintAge();
}