c++基础(继承)

作者: zidea | 来源:发表于2019-04-30 10:50 被阅读3次
Cplusplus-tutorial-in-hindi.jpg

面向对象中三个特性之一的继承,可能是许多人职责OO的一点,高耦合度,所以大家都推崇组合(也叫内聚)而非继承。继承是子从父页,设计继承是处于消除代码 copy。其实面向对象设计不是让我们把真实世界抽象为对象来表示出来,面向对象思想是我们设计程序,组织代码的方案。

#include <iostream>

class Entity
{
  public:
    float x, y;
    void Move(float xa, float ya)
    {
        x += xa;
        y += ya;
    }
};

class Player : public Entity
{
  public:
    const char *name;
};

int main(int argc, char const *argv[])
{

    Player p;
    p.Move(5, 5);
    std::cin.get();
}

这是 c++ 中继承方式,继承背后究竟发生什么了,现在 player 的实例就具有两种类型 Player 类型和 Entity 类型,在 c++ 中类型是比较复杂的,要想完全理解 c++ 的类型系统还需要话费精力和时间。

class Player : public Entity

其实可以 Player 理解为 Entity 扩展,其实扩展应该别继承更加贴切,Player 也是 Entity 的超集,就像 typescript 是 javascript 超集语言,typescript 拥有所有 javascript 的语言特性。

    std::cout << "size of Entity: " << sizeof(Entity) << std::endl;
    std::cout << "size of Player: " << sizeof(Player) << std::endl;
size of Entity: 8
size of Player: 16

如果 Player 没有继承 Entity 在大小是由const char *name;占 4 个字节,再加之拥有 Entity 所占 8 字节就是 12 字节,注意这里const char *name;是指针所以是 4 字节。

相关文章

  • C++基础-(继承)

    C++ 基础 概念及工方式 保持已有类的特性而构造新类的过程称为继承。在已有类的基础上新增自己的特性而产生新类的过...

  • c++基础(继承)

    面向对象中三个特性之一的继承,可能是许多人职责OO的一点,高耦合度,所以大家都推崇组合(也叫内聚)而非继承。继承是...

  • c++ 基础知识回顾 继承 继承的本质就是数据的copy

    c++ 基础知识笔记 继承 什么是继承 继承就是子类继承父类的成员属性以及方法继承的本质就是 数据的复制 是编译器...

  • C到C++的升级

    1、C++ C++继承了所有的C特性 C++在C的基础上提供了更多的语法和特性 C++的设计目标是运行效率与开发效...

  • C++基础继承(is-A)

    继承特点   子类拥有父类的所有属性和方法(除了构造函数和析构函数)。  子类可以拥有父类没有的属性和方法。 继承...

  • Java 基础 - 继承

    参考 C++多继承有什么坏处,Java的接口为什么可以摈弃这些坏处?C++多继承(钻石继承)的问题和解决C++继承...

  • 第十三章 类继承(4)c++的三种继承方式

    (四)c++的三种继承方式 c++有三种继承方式,分别是公有继承,私有继承和保护继承。 (1)公有继承 这是最常用...

  • 8-C++远征之继承篇-学习笔记

    C++远征之继承篇 开篇介绍 整个C++远征计划: 起航->离港->封装->继承 为什么要用继承? 为什么要有继承...

  • C与C++的升级关系

    C++继承了所有的C特性 C++在C的基础上提供了更多的语法和特性 C++的设计目标是运行效率与开发效率的统一 升...

  • JAVA核心技术总结(五六章)继承&接口与内部类

    第五章 继承 在Java中,所有的继承都是公有继承,没有C++的私有继承和保护继承 Java同C++一样,子类不能...

网友评论

    本文标题:c++基础(继承)

    本文链接:https://www.haomeiwen.com/subject/kfgpnqtx.html