类的继承学习记录

简介: 类的继承学习记录

三种类继承方式的不同


1.公有继承:


基类 派生类
公有成员 公有成员
保护成员 保护成员
私有成员 不可访问


2.私有继承:


基类 派生类
公有成员 私有成员
保护成员 私有成员
私有成员 不可访问


3.保护继承:


基类 派生类
公有成员 保护成员
保护成员 保护成员
私有成员 不可访问


私有继承和保护继承的不同在于连续继承时私有继承两次后成员不可访问,但保护继承根据连续继承方式不同访问权限不同;


继承小实例:


问题1:


定义一个document类,有数据成员name,派生出book类,增加数据成员pageCount。


代码


#include<bits/stdc++.h>
using namespace std;
class Document{//基类
  public:
    string name;
    Document(){}//默认无参构造函数
    Document(string name)
    {
      this->name=name;
    }//带参构造函数
    void Showname(){
      cout<<name<<endl;
    }//输出文件名称
};
class Book : public Document{//派生类Book 公有继承 Document
  public:
    Book(){}//默认构造函数
    Book(int pageCount,string name) : Document(name) {
      this->pageCount=pageCount;
    }//带参构造函数
    void Showinformation()
    {
      cout<<pageCount<<endl;
      Showname();
    }//输出信息
  private:
    int pageCount;
};
int main()
{
  Book a(1212,"AAA");
  a.Showinformation();
  return 0;
}


问题2


定义一个哺乳动物类Mammal,再由此派生出狗类Dog,定义一个Dog类的对象,观察基类与派生类的构造函数与析构函数的调用顺序;

构造函数的调用顺序是先基类后派生类,析构函数的调用顺序是先派生类与基类,与构造函数顺序相反


代码


#include<bits/stdc++.h>
using namespace std;
class Mammal{
  public:
    int age;
    Mammal(int age=0)
    {
      this->age=age;
      cout<<"setMammal"<<endl;
    }
    ~Mammal()
    {
      cout<<"delMammal"<<endl;
    }
};
class Dog : public Mammal
{
  public:
    string colour;
    Dog(int age,string colour) : Mammal(age)
    {
      this->colour=colour;
      cout<<"setdog"<<endl;
    }
    ~Dog()
    {
      cout<<"deldog"<<endl;
    }
};
int main()
{
  Dog A(6,"red");
}


e486a27fa3f537e8177f1f875fd15056_b6ea2ff8ada64d3e95ee83065b7eb694.png


反思与总结:


1.初学尽量用公有继承,比较方便

2.每一个类的默认构造函数与带参构造函数都要有,要给全

3.带参构造函数不要给初始值,不然会报错,原因暂时不明,等知道了再来补上。

4.派生类的带参构造函数要调用基类的带参构造函数给基类赋值,写在派生类的参数表里,有多个用逗号间隔,不写在大括号里


目录
相关文章
|
11月前
|
Python
跟我从0学Python——类的继承和多态
类的继承和多态 —— 面向对象编程的扩展与灵活性
|
5月前
|
编译器 数据安全/隐私保护 C++
c++primer plus 6 读书笔记 第十三章 类继承
c++primer plus 6 读书笔记 第十三章 类继承
|
6月前
|
Java C++
继承杂谈。
继承杂谈。
44 0
面向对象-理解多态看这一篇博客就行了
面向对象-理解多态看这一篇博客就行了
35 0
|
6月前
|
存储 程序员 C++
C++系列十七:类与对象
C++系列十七:类与对象
|
6月前
|
C++
C++零基础教程(类的继承)
C++零基础教程(类的继承)
72 0
|
程序员 编译器 C++
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(1)
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(1)
194 0
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(1)
|
程序员 C++
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(2)
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(2)
110 0
黑马程序员C++类和对象【6】—— 继承(一文万字带你搞懂C++继承 —— 你还不知道怎么学C++继承吗?不知道虚继承底层原理吗?)(2)
|
设计模式
类的继承复习(啥都不会了。。。)(三)
类的继承复习(啥都不会了。。。)
92 0
|
自然语言处理 编译器 C++
类的继承复习(啥都不会了。。。)(一)
类的继承复习(啥都不会了。。。)
49 0
下一篇
无影云桌面