(1) 类定义是一种类型声明,存在于代码块中,并没有分配内存空间;对类的数据成员取地址,得到的是类的数据成员在类内的相对偏移量; (2) 类的对象是类的实例化,分配内存空间给实例化对象使用,类的对象的数据成员取地址,得到的是类的对象的数据成员在内存空间的实际地址;
#include <iostream> #include <cstdio> using namespace std; class A { public: A(int i,int j, int k) { _i = i; _j = j; _k = k; } ~A(){} public: int _i; int _j; int _k; }; int main(int argc, char *argv[]) { A a(1,2,3); // 类的数据成员取地址是其在类内部的偏移量 printf("&A::_i : %p\n", &A::_i); printf("&A::_j : %p\n", &A::_j); printf("&A::_k : %p\n", &A::_k); // 类的对象的数据成员取地址是其在内存空间中的地址 printf("&a : %p\n", &a); printf("&a._i : %p\n", &a._i); printf("&a._j : %p\n", &a._j); printf("&a._k : %p\n", &a._k); getchar(); return 0; }