了解原始数据类型的工作原理很简单:计算机中的所有内容都存储为一系列的0和1,因此我需要存储的所有内容都需要编码为0和1的系列。例如:实数3.14
必须存储为位模式,负数-1234
必须存储为位模式,字符'A'
必须存储为位模式,当我将其中一个数据存储在内存中时,我必须使用特定数据类型标记它们存储位置的内存位置(例如float
表示实数的位模式),此数据type告诉我如何在以后要求时解释这个位模式。
但是这个定义如何适用于类,我的意思是当我创建一个特定类的对象时,例如:
MyClass mc;
mc
不存储需要以特定方式解释的位模式,如何理解将类视为数据类型?或者是否有另一种数据类型的定义?
答案 0 :(得分:0)
类或结构是其他数据类型的组合 - 复合数据类型 - 其中组成数据类型可以是基本数据类型或复合数据类型。
在以下示例方案中,X
和Y
是两种复合数据类型。 Y
仅根据原始数据类型定义。 X
是根据原始数据类型和Y
定义的。
struct Y
{
double* d;
char e;
}
struct X
{
float a;
int b;
Y c;
}
编译器决定如何定义X
和Y
的位模式。例如,Y
可能如下所示:
<8 bytes for double* d><1 byte for char e>
X
可能如下所示:
<4 bytes for float a><4 bytes for int b><9 bytes for Y c>
编译器为每个类或结构选择的特定位模式对于理解该概念并不重要。重要的是编译器为每个类或结构选择一个特定的位模式,然后始终如一地使用它。
答案 1 :(得分:0)
类和其他复合数据类型通常仅与其成员一起存储。位内容取决于其数据成员的值。
所以给出以下课程:
class MyClass
{
bool flag;
int number;
double d;
};
计算机将存储flag
成员的1和0,然后是一些填充(跳过字节),然后是number
字段的1和0,然后是更多填充,然后然后是d
字段的1和0。