当我们写int a;
时,并不意味着我们正在创建类int的对象。
答案 0 :(得分:12)
当我们写
int a;
时,并不意味着我们正在创建类int的对象。
int a;
确实在C ++中创建了一个对象。它是int
类型的对象,如果它具有自动存储持续时间,则具有不确定的值;或者具有值0
,如果它具有静态存储持续时间。但是没有“类int
”,因为int
不是类类型。
int
是:
好像你在上一个问题中有点困惑:)
在int x = 12;
中,您要创建一个名为int
的{{1}}类型的对象,其值为12.
C ++中 object 的想法与大多数其他语言不同,并且大多数情况与面向对象编程圈子中常用的不一样。 C ++中的对象是存储区域。
如果某个类型有某个类型,则它可以是对象,引用或函数。
哪个头文件显示它是什么?
该语言只需要x
类型必须存在并具有某些特征(如整体和有符号)。我所知道的所有编译器都只是专门处理所有内置类型,这就是为什么你不会在标准库头文件中找到它们的定义。实际上,他们无法在使用C ++的任何标题中为它们提供定义,因为该语言不提供任何定义基本类型的方法。他们只能:
内置类型实际上是神奇的。
答案 1 :(得分:4)
int
类型内置于语言和编译器中。在大多数实现中,它是某种机器word(适合处理器的寄存器),由处理器有效处理。在我的(Debian / Linux / AMD64)系统上,它是一个32位字,通常与4个字节对齐。
没有标题定义它。编译器对int
有深入的了解。它不是一个类或一些聚合类型,它不是由较小的东西组成的意义上的原子。
我所知道的所有语言都有预定义或内置类型(或名称),这些类型是编译器特有的。例如,在 Ocaml 中,Pervasives模块是内置的。
答案 2 :(得分:0)
(就C而言)
int
是一种原始类型,它是一种语言关键字。没有任何类型的标题声明它。
但是,标题中定义了很多typedef
,它们使用基本类型作为“后端”,并且要求您包含相关标题(即uint32_t
,{{1}等等)。
答案 3 :(得分:0)
当你输入“int a;”时,你让编译器知道范围内的任何符号“a”的数据类型为“int”。
答案 4 :(得分:-1)
int
是内置类型,没有头文件定义它。
int a;
的含义取决于此代码行的位置。
可以是
请注意,int a;
不是定义局部变量的好方法。你应该总是初始化它,有几种方法可以这样做:
int a = 5; //value is 5
int a = int(); //default constructor, value is 0