C ++中的存储类 - 误导性名称?

问题描述 投票:1回答:3

C ++(auto,register,static,extern和mutable)类中的存储类是否具有“对象蓝图”的含义,或者在这种情况下名称“类”有些误导?

c++
3个回答
2
投票

“存储类”中的术语“类”是否具有误导性是可以辩论的,但是我们都可以肯定地认为它与“类”中的“类”完全不同,就像在class中一样,是的。

正如汉斯所说,“存储类别”在现代时代可能更为清晰。

要创建“对象[类型]的蓝图”,您可以定义类模板。


0
投票

“存储类”与“类”无关。

恕我直言,标准可以在这方面进行一些整理,仅仅说存储类说明符更有意义,这意味着那些关键字。

例如,可以使用extern存储类说明符声明变量。但是,将变量描述为“具有外部存储类”是没有意义的。相反,这种变量的适当术语是静态存储持续时间和外部链接。变量也可以使用这两个属性来定义而不使用extern关键字,并且无论是否还有extern声明都没有区别。

在一些地方,标准使用表达式,如“具有寄存器存储类的变量”,这实际上意味着“已使用register存储类说明符声明的变量”。


0
投票

Microsoft Developer Network将存储类定义为“C ++变量声明上下文中的存储类是一种类型说明符,用于控制对象的生命周期,链接和内存位置。”

生命周期是指变量在声明它的声明点和它被销毁的点(它使用的内存被释放)的内存中“挂起”多长时间。在大多数情况下,一旦变量超出范围,其内存将被释放回操作系统以供重用。

链接是指包含它的文件外部的变量的可见性。

内存位置是指在内存中找到变量的位置。这并不是指您所期望的物理内存地址,而是指适用于正在运行的应用程序的内存逻辑划分。有两个逻辑内存区域称为堆栈和堆。堆栈是存储器中的位置,其中存储内部数据以及存储器地址(指针)。它以称为堆栈的数据结构的形式运行。就像一堆自助餐盘一样,物品被推到堆叠顶部,其他物品被推下来。要从堆栈中删除项目,将弹出,使用和丢弃该项目。

堆或自由存储是一个内存池,用于存储应用程序在运行时动态分配的对象。在下一个面向对象编程主题中,您将学习一个对象。您可以使用程序代码中的特定指令在堆上创建和销毁对象。

从edx.org上的C ++课程介绍

© www.soinside.com 2019 - 2024. All rights reserved.