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;

   }

};


目录
相关文章
|
3月前
|
存储 安全 Java
c++--继承
c++作为面向对象的语言三大特点其中之一就是继承,那么继承到底有何奥妙呢?继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用,继承就是类方法的复用。
80 0
|
6月前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
321 6
|
7月前
|
编译器 C语言 C++
☺初识c++(语法篇)☺
☺初识c++(语法篇)☺
|
8月前
|
C++ 开发者
C++学习之继承
通过继承,C++可以实现代码重用、扩展类的功能并支持多态性。理解继承的类型、重写与重载、多重继承及其相关问题,对于掌握C++面向对象编程至关重要。希望本文能为您的C++学习和开发提供实用的指导。
128 16
|
8月前
|
编译器 数据安全/隐私保护 C++
【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】
本实验旨在学习类的继承关系、不同继承方式下的访问控制及利用虚基类解决二义性问题。主要内容包括: 1. **类的继承关系基础概念**:介绍继承的定义及声明派生类的语法。 2. **不同继承方式下对基类成员的访问控制**:详细说明`public`、`private`和`protected`继承方式对基类成员的访问权限影响。 3. **利用虚基类解决二义性问题**:解释多继承中可能出现的二义性及其解决方案——虚基类。 实验任务要求从`people`类派生出`student`、`teacher`、`graduate`和`TA`类,添加特定属性并测试这些类的功能。最终通过创建教师和助教实例,验证代码
174 5
|
10月前
|
编译器 C++ 开发者
【C++】继承
C++中的继承是面向对象编程的核心特性之一,允许派生类继承基类的属性和方法,实现代码复用和类的层次结构。继承有三种类型:公有、私有和受保护继承,每种类型决定了派生类如何访问基类成员。此外,继承还涉及构造函数、析构函数、拷贝构造函数和赋值运算符的调用规则,以及解决多继承带来的二义性和数据冗余问题的虚拟继承。在设计类时,应谨慎选择继承和组合,以降低耦合度并提高代码的可维护性。
134 1
【C++】继承
|
11月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
118 1
|
11月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
118 1
|
11月前
|
安全 编译器 程序员
C++的忠实粉丝-继承的热情(1)
C++的忠实粉丝-继承的热情(1)
89 0
|
11月前
|
编译器 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
127 0