Interview_C++_day15
开始刷C++部分面经 虚函数表、虚函数指针内存位置 虚函数表存储在常量区,也就是只读数据段 虚函数指针存储在对象内。 使用宏定义求结构体成员偏移量 #include<bits/stdc++.h> #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE*)0)->MEMBER) /* (TYPE*)0 将零转型成 TYPE 类型指针 ((TYPE*)0->MEMBER) 访问结构体中的成员 &((TYPE*)0->MEMBER) 取出数据成员地址,也就是相对于零的偏移量 (size_t) & ((TYPE*)0)->MEMBER) 将结果转换成 size_t 类型。 */ struct Node { char a; short b; double c; int d; }; int main() { printf("%d\n", offsetof(Node, a)); printf("%d\n", offsetof(Node, b)); printf("%d\n", offsetof(Node, c)); printf("%d\n", offsetof(Node, d)); return 0; } \(size\_t\) 在可以理解成 \(unsigned\ \ int\) ,在不同平台下被 \(typedef\) 成不同类型。 \(C\) +