什么是C ++中的类型?

时间:2010-11-22 04:05:10

标签: c++ types

所有构造(class,struct,union)在C ++中被分类为类型?任何人都可以解释调用某些C ++结构作为“类型”的背后的基本原理。

5 个答案:

答案 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

)可能很明显
  • 可能的值为truefalse
  • 操作 - 根据可以接受bool作为参数的算术运算符的定义
  • 它的存储方式 - 实际上并非C ++标准强制要求,但可以猜测,在某些系统上,只需要一个位的类型就可以有效地存储(尽管我认为大多数C ++系统都没有进行这种优化)。

对于更复杂的用户创建的类型,情况更加困难。考虑enum类型:您确切知道enum类型的变量可以获得的值的范围。那么structclass怎么样?在那里,你的类型声明告诉编译器struct可以有哪些可能的值,你可以对它做什么操作(操作符重载和接受这种类型的对象的函数),它甚至会推断如何存储它

重新定义的值虽然很大,但请记住它是有限的。即使是具有N个32位整数的结构也具有有限范围的可能值,即2^(32N)

答案 3 :(得分:1)

引用书籍"Bjarne Stroustrup - Programming Principles and Practice Using C++",第77页,第3.8章:

  
      
  • 类型定义一组可能的值和一组操作(对象)。
  •   
  • 对象是一些包含给定类型值的内存。
  •   
  • 是根据类型解释的内存中的一组位。
  •   
  • 变量是命名对象。
  •   
  • 声明是一个为对象命名的语句。
  •   
  • 定义是为对象留出内存的声明。
  •   

答案 4 :(得分:0)

对我来说听起来像是一个语义问题......一个类型指的是一个带有构造的东西,可以用来描述它符合传统的面向对象概念(属性和方法)。任何未被称为类型的东西都可能是用不太健壮的构造创建的。