步步学习C++(零基础)第四章

派生类与继承
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();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Script kid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值