C++继承

继承

继承基本语法

提要点:class 子类 : 继承方式 父类

//继承语法: class 自己定义的类(子类):继承方式 父类
#include<iostream>
using namespace std;
class Person
{
public:
 void body()
 {
 cout<<"Hello pretty girl"<<"\n";
 }
 void age1()
 {
 cout<<"19"<<"\n";
 }
};
class Alaso_shuang : public Person
{
public:
 void voice()
 {
 cout<<"interesting to listen"<<"\n";
 }
};
void test()
{
 Alaso_shuang Alaso;
 Alaso.age1();
 Alaso.body();
 Alaso.voice();
}
int main()
{
 test();
 return 0;
}


继承方式

提要点:
1.继承方式分为:公共继承(public)保护继承(protected)私有继承(private)
2.当子类以共有继承 继承父类时,父类所有的对象(除了private)都是可以以共有继承形式访问
2.当子类以 保护继承 继承父类时,子类所有继承对象均以保护继承的形式出现,并且内外不能访问
3.当子类以 私有继承 继承父类时,子类所有继承对象均以私有继承的形式出现

#include<iostream>
using namespace std;
class F
{
public:
 int a;
protected:
 int b;
private:
 int c;
};
class F1
{
public:
 int a;
protected:
 int b;
private:
 int c;
};
class F2
{
public:
 int a;
protected:
 int b;
private:
 int c;
};
class son : public F
{
public:
 void f()
 {
 a = 10;//父类中公共权限成员拿到手了
 }
protected:
 void f1()
 {
 b = 20;
 }
// private:
// void f3()
// {
// c = 1;//报错啦
// }
};
class son1 : protected F1
{
protected:
 void f1()
 {
 a = 10;
 b = 40;
 //c = 90;//继续报错,说明父类隐私不允许访问
 }
};
class son2 : private F2
{
private:
 void f5()
 {
 a = 100;
 b = 300;
 }
};
void test01()
{
 son1 s;
}
int main()
{
 test01();
 return 0;
}


继承中对象模型

提要点:父类中所有对象均会被子类继承

#include<iostream>
using namespace std;
class f
{
public:
 int a;
protected:
 int b;
private:
 int c;
}; 
class son1:public f
{
 int a;
};
void solve()
{
 son1 s;
 cout<<"sizeof's value : "<< sizeof(s);
}
int main()
{
 solve();
 //答案是16,说明父类所有的成员都继承在了子类身上
 return 0;
}


继承同名成员处理方式

提要点:
1.访问子类同名成员(直接访问即可)
2.访问父类同名成员(需要加作用域)

#include<iostream>
using namespace std;
class F
{
public:
 F()
 {
 a = 10000;
 }
public:
 int a;
};
class son1 : public F
{
public:
 son1()
 {
 a = 2000000;
 }
 
public:
 int a;
};
void solve()
{
 son1 s;
 cout<<s.a<<"\n";
 F f;
 cout<<f.F::a<<"\n";//父类添加作用域
}
int main()
{
 solve();
 return 0;
}
作者:Alaso_shuang原文地址:https://www.cnblogs.com/Alaso687/p/18757405

%s 个评论

要回复文章请先登录注册