#include "stdafx.h"
#include <iostream>
using namespace std;
//构造方式跟类内类对象是一样的
/*
父类:INFO
派生类:Sci
~派生类:~Sci
~父类:!INFO
*/
struct INFO //父类
{//信息
void inputINFO()
{
cout<<"请输入你的学号/姓名/性别(f:女/m:男):";
cin>>Numb>>szName>>sex;
}
void outputINFO()
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<endl;
cout<<Numb<<"\t"<<szName<<"\t"<<sex<<endl;
}
INFO()
{
cout<<"父类:INFO"<<endl;
}
~INFO()
{
cout<<"~父类:~INFO"<<endl;
}
private :
int Numb;
char szName[20];
char sex;
};
struct Sci : public INFO //派生类
{//理科
void SinputSci()
{
cout<<"请输入你的数学/化学/物理:";
cin>>math>>chemistry>>physics;
}
void SoutputSci()
{
cout<<"数学"<<"\t"<<"化学"<<"\t"<<"物理"<<endl;
cout<<math<<"\t"<<chemistry<<"\t"<<physics<<endl;
}
Sci()
{
cout<<"派生类:Sci"<<endl;
}
~Sci()
{
cout<<"~派生类:~Sci"<<endl;
}
private:
float math;//数学
float chemistry;//化学
float physics; //物理
};
struct Arts : private INFO //派生类
//继承类的写法 继承类: (方式(public-private))+父类
{//文科
void AinputArts()
{
cout<<"请输入你的英语/语文/政治:";
cin>>English>>Chinese>>politics;
}
void AInpINFOs()
{
inputINFO();
//当加上私有private时派生类本身可以去调用 在外部声明之后就不能去调用了
//如果父类本身member或memberFunction是私有那么派生类也不能去调用只能父类自己在类内调用
}
void AOutINFO()
{
outputINFO();
}
void AoutputArts()
{
cout<<"英语"<<"\t"<<"语文"<<"\t"<<"政治"<<endl;
cout<<English<<"\t"<<Chinese<<"\t"<<politics<<endl;
}
private:
float English;
float Chinese;
float politics;//政治
};
int main(int argc, char* argv[])
{
Sci sci;
//return 0;
Arts art;
sci.inputINFO();
sci.SinputSci();
sci.outputINFO();
sci.SoutputSci();
//art.inputINFO();//Arts继承的方式是private继承的 父类成员函数的外部声明的对象无法调用
art.AInpINFOs();
//继承类中又一次调用父类的成员函数因为继承类是可以调用父类的函数不管继承的方式
art.AinputArts();
art.AOutINFO();
art.AoutputArts();
return 0;
}
//类内类对象
/*
INFO
{
private :
int Numb;
char szName[20];
char sex;
SCi sci;
Arts art;
}*/
//派生类其实就是把类内类内对象给封装了
#include <iostream>
using namespace std;
//构造方式跟类内类对象是一样的
/*
父类:INFO
派生类:Sci
~派生类:~Sci
~父类:!INFO
*/
struct INFO //父类
{//信息
void inputINFO()
{
cout<<"请输入你的学号/姓名/性别(f:女/m:男):";
cin>>Numb>>szName>>sex;
}
void outputINFO()
{
cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"性别"<<endl;
cout<<Numb<<"\t"<<szName<<"\t"<<sex<<endl;
}
INFO()
{
cout<<"父类:INFO"<<endl;
}
~INFO()
{
cout<<"~父类:~INFO"<<endl;
}
private :
int Numb;
char szName[20];
char sex;
};
struct Sci : public INFO //派生类
{//理科
void SinputSci()
{
cout<<"请输入你的数学/化学/物理:";
cin>>math>>chemistry>>physics;
}
void SoutputSci()
{
cout<<"数学"<<"\t"<<"化学"<<"\t"<<"物理"<<endl;
cout<<math<<"\t"<<chemistry<<"\t"<<physics<<endl;
}
Sci()
{
cout<<"派生类:Sci"<<endl;
}
~Sci()
{
cout<<"~派生类:~Sci"<<endl;
}
private:
float math;//数学
float chemistry;//化学
float physics; //物理
};
struct Arts : private INFO //派生类
//继承类的写法 继承类: (方式(public-private))+父类
{//文科
void AinputArts()
{
cout<<"请输入你的英语/语文/政治:";
cin>>English>>Chinese>>politics;
}
void AInpINFOs()
{
inputINFO();
//当加上私有private时派生类本身可以去调用 在外部声明之后就不能去调用了
//如果父类本身member或memberFunction是私有那么派生类也不能去调用只能父类自己在类内调用
}
void AOutINFO()
{
outputINFO();
}
void AoutputArts()
{
cout<<"英语"<<"\t"<<"语文"<<"\t"<<"政治"<<endl;
cout<<English<<"\t"<<Chinese<<"\t"<<politics<<endl;
}
private:
float English;
float Chinese;
float politics;//政治
};
int main(int argc, char* argv[])
{
Sci sci;
//return 0;
Arts art;
sci.inputINFO();
sci.SinputSci();
sci.outputINFO();
sci.SoutputSci();
//art.inputINFO();//Arts继承的方式是private继承的 父类成员函数的外部声明的对象无法调用
art.AInpINFOs();
//继承类中又一次调用父类的成员函数因为继承类是可以调用父类的函数不管继承的方式
art.AinputArts();
art.AOutINFO();
art.AoutputArts();
return 0;
}
//类内类对象
/*
INFO
{
private :
int Numb;
char szName[20];
char sex;
SCi sci;
Arts art;
}*/
//派生类其实就是把类内类内对象给封装了