C++基础学习笔记----第十一课(类的静态成员、对象模型初步认识)(二)
{
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;
}