我想知道'int'被定义为一个类,意味着像某个头文件中的某个地方它们是一个名为int的类
class int
{
}
当我们声明一个变量时,会创建一个int类的实例吗? 如果'int'是一个类,它存储在哪个文件中?
答案 0 :(得分:4)
没有; int
不是一种“类型”。这是一种所谓的“标量”类型。
为了更一般地确定给定对象类型T
是标量,数组,联合还是类类型,您可以#include <type_traits>
并使用std::is_scalar<T>::value
,类似于特征{{ 1}},is_array
和is_union
。
(另请注意,并非所有类型都是对象类型;还有引用类型和函数类型。您可以使用std::is_object
和is_class
以及is_function
来首先进行区分。)
答案 1 :(得分:1)
int
不是一个类,它是一个本机类型。
声明int:
时int x;
您确实创建了int
。
C ++在这方面与许多其他语言不同,例如在Java或Ruby中,“一切都是对象”。这通常意味着一切都来自一个根类,或者至少看起来是。
考虑例如Ruby,其中所有内容最终都来自Object
。反过来,Object
被实现为一个完全成熟的类。它有像to_s
这样的方法和实现这些方法的代码。
C ++不是那样的。 C ++有非常基本的类型,比如int
,它们不是从任何东西派生的。这些类型背后没有代码,它们没有任何方法。你做不到这样的事情:
int x = 42;
string s = x.to_s();
因为to_s()
或任何方法都没有int
方法。
你也问过,
如果'int'是一个类,它存储在哪个文件中?
int
未存储在任何文件中。 int
的含义和定义内置于编译器本身。您的计算机上没有可以打开的文件,以查看int
的定义方式。当你做类似的事情时:
int x = 42;
x += 77;
...编译器不必查看任何头文件就知道如何添加77到42.它已经知道了,因为int
是编译器已经知道的东西。几乎像先验知识一样,它就是“就在那里”。
编译器如何知道?因为编写编译器的人(顺便说一下,可能使用C或C ++)编写了这些知识。编译器如何编写知道写什么?他们遵循了一个名为C ++标准的文档,该文档准确地解释了符合标准的编译器应该如何表现。
答案 2 :(得分:0)
不,int
是内置类型。这不是一个阶级。编译器具有如何处理int
的内置知识。
答案 3 :(得分:0)
不,int
是一种基本类型,如:
2)有五种有符号整数类型:“
signed char
”,“short int
”,“int
”,“long int
”。和“long long int” ”。 在此列表中,每种类型至少提供与列表中前面的存储一样多的存储空间。普通锭具有自然尺寸 由执行环境的架构建议);提供其他有符号整数类型以满足特殊要求 需要。