所有构造(class,struct,union)在C ++中被分类为类型?任何人都可以解释调用某些C ++结构作为“类型”的背后的基本原理。
答案 0 :(得分:6)
$ 3.9 / 1 - “有两种 类型:基本类型和化合物 类型。类型描述对象(1.8), 参考文献(8.3.2)或函数 (8.3.5)。 ]“
基本类型是char,int,bool等。
复合类型是数组,枚举,类,引用,联合等
答案 1 :(得分:5)
变量包含值 类型是值的规范。 (例如,号码,文字,日期,人,卡车)
所有变量都必须具有类型,因为它们必须包含严格定义的值。
类型可以是内置基元(例如int
),自定义类型(例如枚举和类)或其他一些东西。
答案 2 :(得分:3)
其他答案解决了C ++提供的各种类型,因此我将讨论动机部分。请注意,C ++没有发明数据类型的概念。引自Type system上的维基百科条目。
类型系统可以定义为“a 易处理的句法框架 按照分类短语 他们计算的各种价值“
Data Type页面中另一个有趣的定义:
数据类型(或数据类型)是 识别其中一个的分类 各种类型的数据,如 浮点数,整数或布尔值, 说明可能的值 类型,可以完成的操作 关于那种类型,以及价值观的方式 该类型的存储
请注意,最后一个非常接近C ++对“type”的意思。对于内置(基本)类型(如bool
:
true
和false
bool
作为参数的算术运算符的定义对于更复杂的用户创建的类型,情况更加困难。考虑enum
类型:您确切知道enum
类型的变量可以获得的值的范围。那么struct
和class
怎么样?在那里,你的类型声明告诉编译器struct
可以有哪些可能的值,你可以对它做什么操作(操作符重载和接受这种类型的对象的函数),它甚至会推断如何存储它
重新定义的值虽然很大,但请记住它是有限的。即使是具有N个32位整数的结构也具有有限范围的可能值,即2^(32N)
。
答案 3 :(得分:1)
引用书籍"Bjarne Stroustrup - Programming Principles and Practice Using C++",第77页,第3.8章:
- 类型定义一组可能的值和一组操作(对象)。
- 对象是一些包含给定类型值的内存。
- 值是根据类型解释的内存中的一组位。
- 变量是命名对象。
- 声明是一个为对象命名的语句。
- 定义是为对象留出内存的声明。
答案 4 :(得分:0)
对我来说听起来像是一个语义问题......一个类型指的是一个带有构造的东西,可以用来描述它符合传统的面向对象概念(属性和方法)。任何未被称为类型的东西都可能是用不太健壮的构造创建的。