您的位置:首页 > 其它

几种继承的方式

2016-04-01 21:03 453 查看
源代码:

<span style="font-size:14px;">#include<iostream>
#include<string>
using namespace std;
class Information
{
public:
string name;
string sex;
};

class Information2:public Information //公共继承
{
public:
void Information2_cin();
void Information2_cout();
private:
double number;
};

void Information2::Information2_cin()
{
cin>>name>>sex>>number;
}

void Information2::Information2_cout()
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"number:"<<number<<endl;
cout<<endl;
}

class Information3: private Information //私有继承
{
public:
void Information3_cin();
void Informatiom3_cout();
private:
double classes;
};

void Information3::Information3_cin()
{
cin>>name>>sex>>classes;
}

void Information3::Informatiom3_cout()
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"classes:"<<classes<<endl;
cout<<endl;
}

class Information4
{
public:

protected:
string name;
string sex;
};

class Information5: protected Information4 //保护继承
{
public:
void Information5_cin();
void Information5_cout();
private:
double grade;
};

void Information5::Information5_cin()
{
cin>>name>>sex>>grade;
}

void Information5::Information5_cout()
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"grade:"<<grade<<endl;
cout<<endl;
}

class Information6:public Information5
{
public:
void Information6_cin();
void Information6_cout();
private:
string color;
};

void Information6::Information6_cin()
{
Information5_cin();
cin>>color;
}

void Information6::Information6_cout()
{
Information5_cout();
cout<<"color:"<<color<<endl;
}

int main()
{
Information2 p1;
Information3 p2;
Information5 p3;
Information6 p4;
p1.Information2_cin();
p2.Information3_cin();
p3.Information5_cin();
p4.Information6_cin();
cout<<endl;
p1.Information2_cout();
p2.Informatiom3_cout();
p3.Information5_cout();
p4.Information6_cout();
cout<<p1.name<<endl;//继承的特性例子
return 0;
}</span>
运行结果:



总结:

1.继承:单继承,多继承;派生:单基类派生,多基类派生;

2.继承的方式:public(公共继承),private(私有继承),protected(保护继承);

3.类的继承只能够继承类的全部东西,而不能够选择性的继承,这一点是现阶段C++无法解决的,也可以说是继承的一个弊端,有些东西在继承的时候是不能够全部都用到的,所以,会浪费一些空间;

4.可以在派生类中声明一个与基类成员同名的成员,则在派生类中的新成员就会覆盖基类的同名成员,个人觉得这点好像可以消减一些空间,但是消减的空间是少数的,而且一个变量的名字最好是于这个变量的用处相联系的,所以这种方法并不是很好;

5.继承不能够继承构造函数和析构函数,在派生中需要构造函数和析构函数的话就要自己定义;

6.在继承中(不管是公共继承、私有继承、保护继承)私有成员私有的性质是不会被改变的;

7.公共继承:基类中的数据的性质没有被改变,它的性质就按照普通类的性质理解就好了;私有继承:性质被改变了,将基类中公共成员私有化了,也就是基类中的成员只能在派生类中引用了,不能再其他的地方引用了;保护继承:在单继承中,保护继承和私有继承其实是等效的,但是在二次继承时就会出现差别,在私有继承中,派生类的派生类时不能够引用最原始基类中的成员的,但是在保护继承中就可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: