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;
}