C++ 继承的基本语法与三种继承方式
作者:CtrlX
- 2022 年 8 月 14 日 山东
本文字数:2271 字
阅读完需:约 7 分钟

继承的基本语法
例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同
接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处
普通实现:
//Java页面class Java {public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout << "Java,Python,C++...(公共分类列表)" << endl; } void content() { cout << "JAVA学科视频" << endl; }};//Python页面class Python{public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout << "Java,Python,C++...(公共分类列表)" << endl; } void content() { cout << "Python学科视频" << endl; }};//C++页面class CPP {public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout << "Java,Python,C++...(公共分类列表)" << endl; } void content() { cout << "C++学科视频" << endl; }};
void test01(){ //Java页面 cout << "Java下载视频页面如下: " << endl; Java ja; ja.header(); ja.footer(); ja.left(); ja.content(); cout << "--------------------" << endl;
//Python页面 cout << "Python下载视频页面如下: " << endl; Python py; py.header(); py.footer(); py.left(); py.content(); cout << "--------------------" << endl;
//C++页面 cout << "C++下载视频页面如下: " << endl; CPP cp; cp.header(); cp.footer(); cp.left(); cp.content();
}
int main() {
test01();
system("pause");
return 0;}
复制代码
继承实现:
//公共页面class BasePage{public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; }
void footer() { cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl; } void left() { cout << "Java,Python,C++...(公共分类列表)" << endl; }
};
//Java页面class Java : public BasePage{public: void content() { cout << "JAVA学科视频" << endl; }};//Python页面class Python : public BasePage{public: void content() { cout << "Python学科视频" << endl; }};//C++页面class CPP : public BasePage{public: void content() { cout << "C++学科视频" << endl; }};
void test01(){ //Java页面 cout << "Java下载视频页面如下: " << endl; Java ja; ja.header(); ja.footer(); ja.left(); ja.content(); cout << "--------------------" << endl;
//Python页面 cout << "Python下载视频页面如下: " << endl; Python py; py.header(); py.footer(); py.left(); py.content(); cout << "--------------------" << endl;
//C++页面 cout << "C++下载视频页面如下: " << endl; CPP cp; cp.header(); cp.footer(); cp.left(); cp.content();
}
int main() {
test01();
system("pause");
return 0;}
复制代码
总结:
继承的好处:==可以减少重复的代码==
class A : public B;
A 类称为子类 或 派生类
B 类称为父类 或 基类
派生类中的成员,包含两大部分:
一类是从基类继承过来的,一类是自己增加的成员。
从基类继承过过来的表现其共性,而新增的成员体现了其个性。
继承方式
继承的语法:class 子类 : 继承方式 父类
继承方式一共有三种:
公共继承
保护继承
私有继承
示例:
class Base1{public: int m_A;protected: int m_B;private: int m_C;};
//公共继承class Son1 :public Base1{public: void func() { m_A = 10; //可访问 public权限,父类中的公共权限到了子类中依然是公共权限。 m_B = 10; //可访问 protected权限,父类中的公共权限到了子类中依然是公共权限。 //m_C; //不可访问 }};
void myClass(){ Son1 s1; s1.m_A; //其他类只能访问到公共权限 //s1.m_B;报错,到Son1中 m_B是保护权限 类外访问不到}
//保护继承class Base2{public: int m_A;protected: int m_B;private: int m_C;};
class Son2:protected Base2{public: void func() { m_A = 10; //可访问 protected权限 m_B = 10; //可访问 protected权限 //m_C = 10; //不可访问 }};
void myClass2(){ Son2 s; //s.m_A; //不可访问}
//私有继承class Base3{public: int m_A;protected: int m_B;private: int m_C;};
class Son3:private Base3{public: void func() { m_A = 100; //可访问 private权限 m_B = 100; //可访问 private权限 //m_C = 100; //不可访问 }};
class GrandSon3 :public Son3{public: void func() { //Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到Son3中的private成员 //m_A; //m_B; //m_C; }};
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 3
CtrlX
关注
Pain is inevitable,suffering is optional 2022.08.01 加入
【个人网站】ctrlx.life 【联系方式】微信:gitctrlx 【软件技能】前端,C++,Python,研究网络工程,数据结构与算法。










评论