派生类保护继承

本文提供两个C++程序示例,分别展示了保护继承和公用继承的方式。在保护继承的程序中,派生类`student1`访问基类`student`的保护成员,实现了数据输入和显示。而在公用继承的程序中,派生类同样可以访问基类的保护成员,并能正常运行,展示数据。这两个例子突显了继承方式对类成员访问权限的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将下面的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。
#include
#include
using namespace std;
class student
{
public://基类无公用成员

protected://基类保护成员
int num;
string name;
char sex;
};
class student1 :protected student //用protected方式声明派生类Student1
{
public:
void get_value1();
void display1();
private:
int age;
string addr;
};
void get_value1()
{
cin >> num >> name >> sex;
cin >> age >> addr;
}
void student1::display1()
{
cout << “num=” << num << endl;
cout << “name=” << name << endl;
cout << “sex=” << sex << endl;
cout << “age=” << age << endl;
cout << “addr=” << addr << endl;
}
int main()
{
student1 stud1;
stud1.get_value1();
stud1.display1();
return 0;
}

(1)修改后的程序代码:

#include<iostream>
#include<string>
using namespace std;
class student
{
public:

protected:
	int num;
	string name;
	char sex;
};
class student1 :protected student
{
public:
	void get_value();
	void display();
private:
	int age;
	string addr;
};
void student1::get_value()
{
	cin >> num >> name >> sex;
	cin >> age >> addr;
}
void student1::display()
{
	cout << "num=" << num << endl;
	cout << "name=" << name << endl;
	cout << "sex=" << sex << endl;
	cout << "age=" << age << endl;
	cout << "addr=" << addr << endl;
}
int main()
{
	student1 stud;
	cout << "输入num,name,sex,age,addr:" << endl;
	stud.get_value();
	cout << "这些数值如下:" << endl;
	stud.display();
}

(2)运行结果:
在这里插入图片描述
2.修改上面1中的程序,改为用公用继承方式,使之能正确运行并得到正确的结果。
(1)公用继承方式代码:

#include<iostream>
#include<string>
using namespace std;
class student
{
public:

protected:
	int num;
	string name;
	char sex;
};
class student1 :public student   //公用继承方式
{
public:
	void get_value();
	void display();
private:
	int age;
	string addr;
};
void student1::get_value()
{
	cin >> num >> name >> sex;
	cin >> age >> addr;
}
void student1::display()
{
	cout << "num=" << num << endl;
	cout << "name=" << name << endl;
	cout << "sex=" << sex << endl;
	cout << "age=" << age << endl;
	cout << "addr=" << addr << endl;
}
int main()
{
	student1 stud;
	cout << "输入num,name,sex,age,addr:" << endl;
	stud.get_value();
	cout << "这些数值如下:" << endl;
	stud.display();
}

(2)运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值