C++ 定义多字数据类型
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),我想知道我是否
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代码>它们是语言中的特殊情况。这些多词类型是语言本身的一部分。不可能有多个单词的通用标识符。