为什么指针在C ++中被视为复合类型?

时间:2018-02-13 00:45:11

标签: c++

我的理解:复合类型由原始类型和其他复合类型组成。我知道数组,函数,类,联合和枚举是复合类型。为什么指针是复合词?它由哪些原始类型组成?

3 个答案:

答案 0 :(得分:5)

我认为理由可以在“基本概念”(例如C ++ 14中的第3节)的标准中找到:

  

最后,本节介绍了该语言的基本类型,并列出了从这些类型构建复合类型的方法。

因此,复合类型实际上只是从另一个基础类型创建的类型。由于您从pointer-to-T构建T,因此指针肯定符合该定义。

就历史而言,它可能是从C继承的,因为它具有相同的概念,尽管它指的是类型和对象/功能以及派生类型。派生类型似乎反映了相同的事物(至少是那些在两种语言中都很常见的事物),包括指针。

答案 1 :(得分:1)

指针是复合类型的,因为它既存储内存地址又存储数据类型。来自Murach的C ++编程书的答案。

答案 2 :(得分:-1)

指向不同类型的指针是不同的,所以指针包含有关它指向的类型的一些信息。并且指针至少具有2个特殊功能,它们分别是*和->。

原因是int,char具有某些功能,不同之处在于您只需要知道“ it is int”或“ it is char”,但是当您尝试使用*或->时,便知道“ it is int”。指针”,这是不可行的(指针++需要知道其类型的大小)。

实际上,面向对象方法中的所有事物都应被视为复合类型(或者我们更常将其称为类),因为您始终需要使用数据来做某事(否则,数据的存在是没有意义的),如果是这样,建议您尝试做的是显示为类中的方法,因为它是OOM。