数据类型是否"int"定义为类?
Is "int" datatype is defined as a class?
我想知道"int"是否被定义为一个类,意味着就像某些头文件中的某个地方一样,它们是一个名为int 的类
class int
{
}
当我们声明一个变量时,会创建一个int类的实例吗?如果"int"是一个类,它存储在哪个文件中??
否;int
是而不是"类类型"的类型。它是一种所谓的"标量"类型。
要更一般地确定给定对象类型T
是标量类型、数组类型、并集类型还是类类型,可以使用#include <type_traits>
和std::is_scalar<T>::value
,对于特征is_array
、is_union
和is_class
也是如此。
(请进一步注意,并非所有类型都是对象类型;也有引用类型和函数类型。可以先使用std::is_object
、is_function
和is_reference
进行区分。)
int
不是一个类,而是一个本机类型。
当您声明int:时
int x;
您确实创建了int
的实例。
在这方面,C++与许多其他语言不同,比如在Java或Ruby中,"一切都是对象"。这通常意味着一切都是从一个根类派生的,或者至少看起来是。
以Ruby为例,其中的所有内容最终都源自Object
。Object
又被实现为一个成熟的类。它上面有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
"answers"long int
"。,和"long-long-int"。在该列表中,每种类型提供的存储量至少与列表中其前面的类型一样多。普通int具有自然大小由执行环境的体系结构建议);提供了其他带符号整数类型以满足特殊要求需求。
- 是否可以从int转换为enum类类型
- '[](std::list& list)<int>{return std::move(list)}(list)' 是否保证将 'list' 留空?
- 是否可以保证按字节的零 int 是零的表示形式?
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 将uint8_t转换为已签名的 int 是否至少有时不正确?
- 判断 int 是否在 C++ 中赋值的任何优雅方法
- 从std::round转换为int是否安全
- 有没有办法检查int是否不等于数组中的所有值?(C )
- "!" "== 0"是否检查 int 是否是 0 的好做法?
- 从函数返回向量<向量<int>>是否会调用 C++11 中的任何移动构造函数
- 确定 int 是否包含特定数字的函数出现问题
- int 是否有运算符==
- 确定 int 是否不为 0,没有 if 语句
- 本地引用int是否有任何好处
- 在C++中,函数定义的int a[]和int*a是否相同
- 在C++中递增未初始化的 int 是否安全
- 将string映射到int是否可能比使用hashmap更快?
- Int a=1, a || 1是否为常量表达式
- ' int a = 0, b = a '是否有未定义的行为?
- 将本机方法定义为公共本机synchronized int doSum(int a, int b)是否正确?