定义多字数据类型

Defining a multi word dataype

C++ 具有 long long intunsigend int 等内置类型。类型可以与限定符组合,例如 constvolatilemutable

为什么 long long int 是一种数据类型?为什么不命名为longLongInt?多字数据类型如何工作?我可以自己定义吗?

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

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

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

isUnit LinAlVector vec(x,y,z);

其中 isUnit 是影响 LinAlVector 行为的修饰符(例如,如果定义了非单位向量,则会出现编译器错误)。

我知道面向对象的直接方法是从 LinAlVector.

派生 class UnitLinAlVector

long 不是类型,它是类型修饰符见 http://en.cppreference.com/w/cpp/language/types

据我所知,无法定义自定义修饰符。

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

Why is long long int a datatype? Why is it not named longLongInt?

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

不管它值多少钱,如果它被命名为 longLongInt,那么就必须在该语言中引入一个新的关键字。这是要避免的事情,因为引入新关键字不向后兼容。 long long int 没有引入任何关键字,因为 longint 已经是关键字。

Can I define my own?

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

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

Is it possible to define a customized qualifier

不是该语言的使用者。

您可以使用 cstdint 中的 Fixed width integer types 来确保您的字体具有您需要的宽度。