C++ 定义多字数据类型

C++ 定义多字数据类型,c++,types,qualifiers,C++,Types,Qualifiers,C++具有内置类型,例如long-long-int,unsigend-int。类型可以与限定符组合,例如const、volatile和mutable 为什么long-long-int是一种数据类型?为什么它没有命名为longlongent?多字数据类型是如何工作的?我能定义我自己的吗 是否可以针对自定义数据类型定义自定义限定符 例如在3D中考虑一个线性代数向量。可以定义一个类LinAlVector,它包含向量的x、y、z分量 如果我现在需要确保这个向量是一个单位向量(长度等于1),我想知道我是否

C++具有内置类型,例如
long-long-int
unsigend-int
。类型可以与限定符组合,例如
const
volatile
mutable

为什么
long-long-int
是一种数据类型?为什么它没有命名为
longlongent
?多字数据类型是如何工作的?我能定义我自己的吗

是否可以针对自定义数据类型定义自定义限定符

例如在3D中考虑一个线性代数向量。可以定义一个类LinAlVector,它包含向量的x、y、z分量

如果我现在需要确保这个向量是一个单位向量(长度等于1),我想知道我是否可以写

isUnit LinAlVector vec(x,y,z);
其中,
isUnit
是影响
LinAlVector
行为的修饰符(例如,如果定义了非单位向量,则编译器错误)


我知道面向对象的直接方法是从
LinAlVector
派生一个类
UnitLinAlVector

long不是一个类型,它是一个类型修饰符,请参见

据我所知,不可能定义自定义修饰符

您可以做的是创建成员函数isUnit返回bool

为什么
long-long-int
是一种数据类型?为什么它没有命名为
longlongent

因为这是标准委员会决定的名字。选择该名称可能是因为它与C99中的等效数据类型同名

无论如何,如果它被命名为
longLongInt
,那么必须在语言中引入一个新的关键字。这是需要避免的,因为引入新关键字是不向后兼容的
long-long-int
没有引入任何关键字,因为
long
int
已经是关键字

我能定义我自己的吗

不,作为该语言的用户,您可以创建类型别名和新的类类型,但不能创建新的基本类型

作为编译器实现者,您当然可以

是否可以定义自定义限定符


不是作为语言的使用者

您可以使用from
cstdint
来确保您的类型具有所需的宽度。

它实际上是一个“三字”数据类型:
long-long-int i它们是语言中的特殊情况。这些多词类型是语言本身的一部分。不可能有多个单词的通用标识符。