04 c++ 类数据成员的地址和类对象数据成员的地址

    科技2022-07-15  135

    2020年10月4日


    1,类数据成员和类对象数据成员地址的区别

    (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; }

    Processed: 0.013, SQL: 8