C++基础学习笔记----第十一课(类的静态成员、对象模型初步认识)(二)

2014-11-24 03:09:18 · 作者: · 浏览: 5
{ private: int a; int b; int c; static int d; public: A(int a, int b, int c) { /*如果这里这样定义将会造成二义性,程序最后将无法确定怎么进行赋值,所以这里编译报错*/ /*this->a = a; this->b = b; this->c = c;*/ /*这里的this是C++中的关键字,这里的this指针指向当前的对象所以this->a是指向这个类的成员变量a*/ this->a = a; this->b = b; this->c = c; } void print() { /*打印各个变量的值和变量地址*/ printf("a = %d, &a = %p\n",a,&a); printf("b = %d, &b = %p\n",b,&b); printf("c = %d, &c = %p\n",c,&c); /*通过地址打印可以看出d的地址和变量a,b,c的地址并不是连续的,可以进一步证明静态成员变量的内存分配来自全局数据区*/ printf ("d = %d, &c = %p\n",d,&d); /*这里打印this指针的地址,也是具体的对象的地址,随着对象的创建而this指针式不同的*/ printf("%p\n",this); } }; int A::d = 0; int main() { A g = A(2,3,4); g.print(); printf ("&g = %p\n", &g); A g2 = A(7,8,9); g2.print(); printf ("&g = %p\n", &g2); return 0; }