当前位置:首页 > 后端开发 > 正文内容

【C++】类的承继的深入探讨

邻居的猫1个月前 (12-09)后端开发1980

承继是扩展现有类并为基类供给新功能的一种方法。

本文首要讨论一个问题:子类会包含父类所包含的全部吗?

起先,作者以为这个问题的答案是否定的,由于子类无法拜访父类的private成员

可是,运转下述一个简易的示例代码,得到Entity类和Player类的巨细分别是8和16。

#include<iostream>

class Entity {
private:
	float X, Y;
};

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

int main() {
	std::cout << sizeof(Entity) << std::endl;
	std::cout << sizeof(Player) << std::endl;
	std::cin.get();
	return 0;
}

其间,Entity类的巨细为两个int成员(巨细为4)之和,Player类的巨细正好为Entity的两个int成员与字符指针Name(64位巨细为8,32位巨细为4,这里是64位)之和。

这也证明了Player类包含了Entity类,因而问题的答案是必定的。

当X和Y设为Entity的私有成员时,虽然Player的目标无法拜访X和Y,但派生类会承继基类的一切成员,包含私有成员。

即便这些私有成员不能直接被派生类拜访,它们仍然是类目标内存布局的一部分。

这一起也证明了C++的可见性(private、protected、public)修饰符仅仅约束了拜访权限,标准编程,对程序的实践运转方法和功能没有影响。

如文章有误或遗漏,欢迎谈论指出
如有协助,欢迎重视我的博客,后续也会更新其他的技能内容(坚持日更ing)

特别引荐 Cherno 的C++课程,能够去某管订阅他的频道,B站也有转载

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=196

分享给朋友:

“【C++】类的承继的深入探讨” 的相关文章

R言语数据绘图学习(0x01)-装置ggplot2与测验

R言语数据绘图学习(0x01)-装置ggplot2与测验

0x01 装置与R根底 一向传闻数据剖析里R言语是比较‘正统’,何况久闻ggplot2这些R言语的数据剖析库台甫,想到往后数据剖析和收拾的需求,这儿开一个简略的系列学习一些R言语和ggplot2的绘图根底。自己学习的书本是Winston Chang大佬的《R Graphics Cookbook》,且...

r语言attach,深入理解R语言中的attach与detach函数

r语言attach,深入理解R语言中的attach与detach函数

在R语言中,`attach`函数用于将数据框(data frame)或列表(list)中的变量自动绑定到全局环境中,使得这些变量可以直接使用它们的名称而不需要前缀。这可以简化代码,使得对数据框或列表中的变量进行操作时更加方便。例如,假设你有一个名为`data`的数据框,其中包含变量`x`、`y`和`...

c语言函数返回数组,C语言函数返回数组的实现与注意事项

c语言函数返回数组,C语言函数返回数组的实现与注意事项

在C语言中,函数不能直接返回一个数组。但是,你可以通过以下几种方式间接地实现:1. 返回指向数组的指针:你可以让函数返回一个指向数组的指针。但这种方式需要你确保返回的指针所指向的数组在函数返回后仍然有效。一种常见的做法是使用静态数组,因为静态数组在函数返回后仍然存在,但它的缺点是每次调用函数时,数组...

安装python教程, Windows系统安装Python

安装python教程, Windows系统安装Python

安装Python是一个简单的过程,但具体的步骤可能会因操作系统和Python版本的不同而有所差异。以下是一个基本的Python安装指南,适用于大多数情况。 1. 下载Python首先,您需要从Python官方网站下载Python安装包。访问 选择适合您操作系统的Python版本。 2. 安装Pyt...

c语言gets函数,使用、风险与替代方案

`gets` 函数是 C 语言标准库中的一个函数,用于从标准输入读取一行文本,直到遇到换行符或文件结束符。它的原型如下:```cchar gets;```其中,`str` 是一个字符数组,用于存储读取的字符串。`gets` 函数会读取直到换行符或文件结束符,然后将换行符替换为字符串终止符 `0`,并...

delphi7序列号,Delphi7序列号获取与使用指南

1. 序列号: 6AMDPKG68EDB8PP79SFE 3QH9QW2. 获取方法: 通过合法渠道购买:如果您已经购买了Delphi 7的正版授权,序列号通常会在购买时提供,或者在软件安装时输入序列号。如果您丢失了序列号,可以联系Delphi 7官方客服进行查询和恢复。 使用破解...