数据类型是否"int"定义为类?



我想知道"int"是否被定义为一个类,意味着就像某些头文件中的某个地方一样,它们是一个名为int 的类

class int
{
}

当我们声明一个变量时,会创建一个int类的实例吗?如果"int"是一个类,它存储在哪个文件中??

否;int而不是"类类型"的类型。它是一种所谓的"标量"类型。

要更一般地确定给定对象类型T是标量类型、数组类型、并集类型还是类类型,可以使用#include <type_traits>std::is_scalar<T>::value,对于特征is_arrayis_unionis_class也是如此。

(请进一步注意,并非所有类型都是对象类型;也有引用类型和函数类型。可以先使用std::is_objectis_functionis_reference进行区分。)

int不是一个类,而是一个本机类型。

当您声明int:时

int x;

您确实创建了int的实例。

在这方面,C++与许多其他语言不同,比如在Java或Ruby中,"一切都是对象"。这通常意味着一切都是从一个根类派生的,或者至少看起来是。

以Ruby为例,其中的所有内容最终都源自ObjectObject又被实现为一个成熟的类。它上面有to_s之类的方法以及实现这些方法的代码。

C++不是那样的。C++有非常基本的类型,比如int,它们不是从任何东西派生的。这些类型背后没有代码,也没有方法。你不能这样做:

int x = 42;
string s = x.to_s();

因为int上没有to_s()方法或任何方法。

你还问,

如果"int"是一个类,它存储在哪个文件中??

int未"存储"在任何文件中。int的含义和定义内置于编译器本身。您无法在机器上打开任何文件来查看int是如何定义的。当你做这样的事情时:

int x = 42;
x += 77;

编译器不需要查看任何头文件就可以知道如何将77添加到42。它已经知道了,因为int是编译器已经知道的东西。就像先验知识一样,它"就在那里"。

编译器是怎么知道的?因为编写编译器的人(顺便说一句,可能使用C或C++)把这些知识编码了进去。编译器是如何编写的?他们遵循了一个名为C++标准的文档,该文档准确地解释了一致编译器的行为。

否,int是内置类型。这不是一门课。编译器内置了如何处理int的知识。

否,int是一种基本类型,定义如下:

3.9.1基本类型【basic.basic】

2)有五种有符号整数类型:"signed char"、"short int"、"int"one_answers"long int"。,和"long-long-int"。在该列表中,每种类型提供的存储量至少与列表中其前面的类型一样多。普通int具有自然大小由执行环境的体系结构建议);提供了其他带符号整数类型以满足特殊要求需求。

最新更新