0
点赞
收藏
分享

微信扫一扫

Cherno C++ P26 C++继承

天际孤狼 2022-01-21 阅读 104

YouTube视频链接

C++继承

本文是ChernoP26视频的学习笔记。
  面向对象编程是一个巨大的编程范式,类之间的继承是它的一个基本方向,它是我们可以实际利用的最强大的特性之一。继承允许我们有一个相互关联的类的层次结构,它允许我们有一个包含公共功能的基类,然后允许从那个基类中分离出来,从最初的父类创建子类。类、继承等主要作用是可以避免代码重复。
  我们可以把类之间的所有公共功能放在一个父类中,然后从基类(父类)创建(派生)一些类,稍微改变下或者引入全新的功能。继承给我们提供了这样一种方式,将这些公共代码放到基类中。
  Main.cpp如下

#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;

	void PrintName()
	{
		std::cout << Name << std::endl;
	}
};

int main()
{
	Player player;
	player.Move(5, 10);
	player.X = 2;

	std::cin.get();
}

  Main.cpp表示,假设我有一个Entity类,它将管理游戏中所有的实体对象。每个实体在游戏中都有自己的位置X和Y。然后我们通过move方法赋予每个实体移动的能力,xa,ya作为参数,表示想要移动的大小。这样我们就有了基类Entity。我们可以利用继承的力量,扩展这个Entity实体类,来创建一个名为Player的新类型,然后让它存储新数据,比如名字以及提供额外的功能。
  我们在声明类型中写一个冒号,然后写public Entity,就把Player变成Entity的子类。现在Player拥有Entity的所有东西,比如说类成员X和Y。任何在Entity类中不是私有的东西,实际上都可以被Player访问。Player总是Entity的超集,意味着Player总是会拥有Entity的一切,也可能会更多。
  因为有浮点数X和Y在Entity类中,我们可以打印Entity对象的大小到控制台。我们可以看到Entity的大小是8。
在这里插入图片描述  如果我们继续打印Player的大小,如果Player没有扩展Entity,它是一个独立的类,只有const char指针,应该是4字节的内存。但是因为Player扩展了Entity,它将继承了Entity类中的所有变量,所以大小是12。
在这里插入图片描述

举报

相关推荐

0 条评论