C++继承的基本语法与三种继承方式

简介: 继承的好处:==可以减少重复的代码==class A : public B; A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。继承方式继承的语法:class 子类 : 继承方式 父类继承方式一共有三种:• 公共继承• 保护继承• 私有继承

title: C++继承的基本语法与三种继承方式

tags: CPP

categories:

 - Programming

 - CPP

cover: >-

 https://cdn.staticaly.com/gh/1438802682/image-hosting@master/hexoBlogCtrlCherry/jy5.mcd9y4hyiog.webp

abbrlink: eec960c5

date: 2022-08-14 19:30:59


继承的基本语法

例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同

接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处

普通实现:

//Java页面

classJava

{

public:

   voidheader()

   {

       cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;

   }

   voidfooter()

   {

       cout<<"帮助中心、交流合作、站内地图...(公共底部)"<<endl;

   }

   voidleft()

   {

       cout<<"Java,Python,C++...(公共分类列表)"<<endl;

   }

   voidcontent()

   {

       cout<<"JAVA学科视频"<<endl;

   }

};

//Python页面

classPython

{

public:

   voidheader()

   {

       cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;

   }

   voidfooter()

   {

       cout<<"帮助中心、交流合作、站内地图...(公共底部)"<<endl;

   }

   voidleft()

   {

       cout<<"Java,Python,C++...(公共分类列表)"<<endl;

   }

   voidcontent()

   {

       cout<<"Python学科视频"<<endl;

   }

};

//C++页面

classCPP

{

public:

   voidheader()

   {

       cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;

   }

   voidfooter()

   {

       cout<<"帮助中心、交流合作、站内地图...(公共底部)"<<endl;

   }

   voidleft()

   {

       cout<<"Java,Python,C++...(公共分类列表)"<<endl;

   }

   voidcontent()

   {

       cout<<"C++学科视频"<<endl;

   }

};

voidtest01()

{

   //Java页面

   cout<<"Java下载视频页面如下: "<<endl;

   Javaja;

   ja.header();

   ja.footer();

   ja.left();

   ja.content();

   cout<<"--------------------"<<endl;

   //Python页面

   cout<<"Python下载视频页面如下: "<<endl;

   Pythonpy;

   py.header();

   py.footer();

   py.left();

   py.content();

   cout<<"--------------------"<<endl;

   //C++页面

   cout<<"C++下载视频页面如下: "<<endl;

   CPPcp;

   cp.header();

   cp.footer();

   cp.left();

   cp.content();

}

intmain() {

   test01();

   system("pause");

   return0;

}

继承实现:

//公共页面

classBasePage

{

public:

   voidheader()

   {

       cout<<"首页、公开课、登录、注册...(公共头部)"<<endl;

   }

   voidfooter()

   {

       cout<<"帮助中心、交流合作、站内地图...(公共底部)"<<endl;

   }

   voidleft()

   {

       cout<<"Java,Python,C++...(公共分类列表)"<<endl;

   }

};

//Java页面

classJava : publicBasePage

{

public:

   voidcontent()

   {

       cout<<"JAVA学科视频"<<endl;

   }

};

//Python页面

classPython : publicBasePage

{

public:

   voidcontent()

   {

       cout<<"Python学科视频"<<endl;

   }

};

//C++页面

classCPP : publicBasePage

{

public:

   voidcontent()

   {

       cout<<"C++学科视频"<<endl;

   }

};

voidtest01()

{

   //Java页面

   cout<<"Java下载视频页面如下: "<<endl;

   Javaja;

   ja.header();

   ja.footer();

   ja.left();

   ja.content();

   cout<<"--------------------"<<endl;

   //Python页面

   cout<<"Python下载视频页面如下: "<<endl;

   Pythonpy;

   py.header();

   py.footer();

   py.left();

   py.content();

   cout<<"--------------------"<<endl;

   //C++页面

   cout<<"C++下载视频页面如下: "<<endl;

   CPPcp;

   cp.header();

   cp.footer();

   cp.left();

   cp.content();

}

intmain() {

   test01();

   system("pause");

   return0;

}

总结:

继承的好处:==可以减少重复的代码==

class A : public B;

A 类称为子类 或 派生类

B 类称为父类 或 基类

派生类中的成员,包含两大部分

一类是从基类继承过来的,一类是自己增加的成员。

从基类继承过过来的表现其共性,而新增的成员体现了其个性。

继承方式

继承的语法:class 子类 : 继承方式  父类

继承方式一共有三种:

  • 公共继承
  • 保护继承
  • 私有继承

网络异常,图片无法展示
|

示例:

classBase1

{

public:

   intm_A;

protected:

   intm_B;

private:

   intm_C;

};

//公共继承

classSon1 :publicBase1

{

public:

   voidfunc()

   {

       m_A=10; //可访问 public权限,父类中的公共权限到了子类中依然是公共权限。

       m_B=10; //可访问 protected权限,父类中的公共权限到了子类中依然是公共权限。

       //m_C; //不可访问

   }

};

voidmyClass()

{

   Son1s1;

   s1.m_A; //其他类只能访问到公共权限

   //s1.m_B;报错,到Son1中 m_B是保护权限 类外访问不到

}

//保护继承

classBase2

{

public:

   intm_A;

protected:

   intm_B;

private:

   intm_C;

};

classSon2:protectedBase2

{

public:

   voidfunc()

   {

       m_A=10; //可访问 protected权限

       m_B=10; //可访问 protected权限

       //m_C = 10; //不可访问

   }

};

voidmyClass2()

{

   Son2s;

   //s.m_A; //不可访问

}

//私有继承

classBase3

{

public:

   intm_A;

protected:

   intm_B;

private:

   intm_C;

};

classSon3:privateBase3

{

public:

   voidfunc()

   {

       m_A=100; //可访问 private权限

       m_B=100; //可访问 private权限

       //m_C = 100; //不可访问

   }

};

classGrandSon3 :publicSon3

{

public:

   voidfunc()

   {

       //Son3是私有继承,所以继承Son3的属性在GrandSon3中都无法访问到Son3中的private成员

       //m_A;

       //m_B;

       //m_C;

   }

};


目录
相关文章
|
11天前
|
编译器 数据安全/隐私保护 C++
c++primer plus 6 读书笔记 第十三章 类继承
c++primer plus 6 读书笔记 第十三章 类继承
|
3天前
|
C++
C++一分钟之-继承与多态概念
【6月更文挑战第21天】**C++的继承与多态概述:** - 继承允许类从基类复用代码,增强代码结构和重用性。 - 多态通过虚函数实现,使不同类对象能以同一类型处理。 - 关键点包括访问权限、构造/析构、菱形问题、虚函数与动态绑定。 - 示例代码展示如何创建派生类和调用虚函数。 - 注意构造函数初始化、空指针检查和避免切片问题。 - 应用这些概念能提升程序设计和维护效率。
16 2
|
5天前
|
C++
C++:继承性
C++:继承性
13 2
|
5天前
|
编译器 C++
C++:继承性_程序
C++:继承性_程序
8 1
|
10天前
|
存储 编译器 程序员
【C++高阶】C++继承学习手册:全面解析继承的各个方面
【C++高阶】C++继承学习手册:全面解析继承的各个方面
14 1
|
21天前
|
存储 自然语言处理 编译器
【C++语言1】基本语法
【C++语言1】基本语法
|
4天前
|
编译器 C++ Windows
C++ 链式继承下的虚函数列表
C++ 链式继承下的虚函数列表
11 0
|
7天前
|
C++
C++ 是一种面向对象的编程语言,它支持对象、类、继承、多态等面向对象的特性
C++ 是一种面向对象的编程语言,它支持对象、类、继承、多态等面向对象的特性
|
11天前
|
程序员 C语言 C++
【C++语言】继承:类特性的扩展,重要的类复用!
【C++语言】继承:类特性的扩展,重要的类复用!