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;

   }

};


目录
相关文章
|
17天前
|
编译器 C++ 开发者
【C++】继承
C++中的继承是面向对象编程的核心特性之一,允许派生类继承基类的属性和方法,实现代码复用和类的层次结构。继承有三种类型:公有、私有和受保护继承,每种类型决定了派生类如何访问基类成员。此外,继承还涉及构造函数、析构函数、拷贝构造函数和赋值运算符的调用规则,以及解决多继承带来的二义性和数据冗余问题的虚拟继承。在设计类时,应谨慎选择继承和组合,以降低耦合度并提高代码的可维护性。
28 1
【C++】继承
|
2月前
|
安全 程序员 编译器
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
88 11
|
2月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
55 1
|
2月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
42 1
|
3月前
|
Java C# C++
C++ 11新特性之语法甜点1
C++ 11新特性之语法甜点1
34 4
|
3月前
|
编译器 C++ 容器
C++ 11新特性之语法甜点2
C++ 11新特性之语法甜点2
30 1
|
2月前
|
安全 编译器 程序员
C++的忠实粉丝-继承的热情(1)
C++的忠实粉丝-继承的热情(1)
20 0
|
2月前
|
编译器 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
32 0
|
2月前
|
程序员 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
35 0
|
3月前
|
存储 算法 编译器
C++ 11新特性之语法甜点4
C++ 11新特性之语法甜点4
28 0