C++标准中提到了“动态类型”这个术语(C标准在类似的上下文中提到了“有效类型”),例如:
如果程序尝试通过除以下类型之一的glvalue访问对象的存储值,则行为未定义: - 对象的动态类型,
但是,使用
例如:
如果程序尝试通过除以下类型之一的glvalue访问对象的存储值,则行为未定义: - 对象的动态类型,
但是,使用
malloc
分配对象的动态类型如何确定呢?例如:
void *p = malloc(sizeof(int));
int *pi = (int*)p;
pi
所指向的对象的动态类型将会是int
吗?
float
和int
?它们不是malloc
调用的一部分。这里只有存储空间而没有对象。所有对象都需要存储空间,但并非所有存储空间都需要对象。 - Nicol Bolas