c++第八次作业(谭浩强C++程序设计第三版374—378)

2.私有继承修改程序

#include <bits/stdc++.h>
using namespace std;

class Student{
	public:
		void get_value()
		{
			cin>>num;
			getchar();
			cin>>name;
			getchar();
			cin>>sex;
		}
		void display()
		{
			cout<<"num:"<<num<<endl;
			cout<<"name:"<<name<<endl;
			cout<<"sex:"<<sex<<endl;
		}
	protected:
		int num;
		string name;
		char sex;
};

class Studentl:private Student
{
	public:
		void get_value_1()
		{
			get_value();
			getchar();
			cin>>age;
			getchar();
			cin>>address;
		}
		void display_1()
		{
			display();
			cout<<"age:"<<age<<endl;
			cout<<"address:"<<address<<endl;
		}
	private:
		int age;
		string address;
}; 

int main()
{
	Studentl studl;
	studl.get_value_1() ;
	studl.display_1() ;
	return 0;
}

4.私有继承改为公有继承

        (1)分析比较:私有继承与公有继承的唯一区别是私有继承在类外可以访问基类的公有数据成员,但公有继承可以。

        (2)考虑什么情况能互相代替:在类外要访问基类的公有数据成员时能互相代替。

#include <bits/stdc++.h>
using namespace std;

class Student{
	public:
	protected:
		int num;
		string name;
		char sex;
};

class Student1:public Student{
	public:
		void get_value1();
		void display1();
	private:
		int age;
		string addr;
};

void Student1::get_value1 ()
{
	cin>>num;
	getchar();
	cin>>name;
	getchar();
	cin>>sex;
	getchar();
	cin>>age;
	getchar();
	cin>>addr;
}

void Student1::display1() 
{
	cout<<"num:"<<num<<endl;
	cout<<"name:"<<name<<endl;
	cout<<"sex:"<<sex<<endl;
	cout<<"age:"<<age<<endl;
	cout<<"address:"<<addr<<endl;		
	
}

int main()
{
	Student1 stud1;
	stud1.get_value1() ;
	stud1.display1() ;
	return 0;
}

5.分析访问属性

        (1)能访问基类A中的j和k,只能访问i 

        (2)能

        (3)多重继承的访问权限????

10.使用继承和组合补写程序

        类的组合:在一个类的以另一个类的对象作为数据成员的。

#include <bits/stdc++.h>
using namespace std;
class Teacher{
	public:
		Teacher(int n,string na,char s):num(n),name(na),sex(s){}
		void dispaly();
	private:
		int num;
		string name;
		char sex;
};

void Teacher::dispaly()
{
	cout<<num<<" "<<name<<" "<<sex<<endl;
}

class BirthDate{
	public:
		BirthDate(int y,int m,int d):year(y),month(m),day(d){}
		void xiugai(int y,int m,int d);
		void display();
	private:
		int year;
		int month;
		int day;
};

void BirthDate::xiugai(int y,int m,int d)
{
	year = y;
	month = m;
	day = d;
} 

void BirthDate::display()
{
	cout<<year<<" "<<month<<" "<<day<<endl;
} 

class Professor:public Teacher{
	public:
		Professor(int n,string na,char s,int y,int m,int d):Teacher(n,na,s),birthday(y,m,d){}
		void xiugai(int year,int month,int day){
			birthday.xiugai(year,month,day); 
		}
		void displaynew();
	private:
		BirthDate birthday;//BirthDate类的对象作为Professor类的数据成员 
};

void Professor::displaynew() 
{
	Teacher::dispaly();
	birthday.display();
}

int main()
{
	int year,month,day;
	Professor prof1(7,"wu",'m',2020,5,28);
	cout<<"请输入最新的生日数据:"; 
	cin>>year>>month>>day;
	prof1.xiugai(year,month,day); 
	prof1.displaynew();
	return 0;
}

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小吴同学·

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

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

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

打赏作者

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

抵扣说明:

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

余额充值