level 3
#include<iostream.h>
class A
{
public:
int a;A*pa;
A(int a=1){this->a=a;pa=this;}
};
class B:public A
{
public:
int a;B*pb;
B(int a=2){this->a=a;pb=this;}
};
class C:public B
{
public:
int a;C*pc;
C(int a=3){this->a=a;pc=this;}
}m(4);
void main()
{cout<<m.A::a <<endl<<m.B::a<<endl<<m.a<<endl;
cout<<m.pa<<endl<<m.pb<<endl<<m.pc<<endl;
}
2014年11月16日 21点11分
2
level 9
主函数执行完第一个cout语句后,this指针指向m.a的地址,所以输出地址就一样啦。可以改为cout<<m.A::a<<m.pa…这样就行了
2014年11月17日 14点11分
5
不管第一个cout语句存不存在,都不会影响第二个cout语句的输出结果。
2014年11月17日 17点11分
谢谢你的回答,不过,你回答的是错误的。
2014年11月17日 17点11分
this的值一定是不可改变的。
2014年11月17日 21点11分
这样啊,受教了
2014年11月18日 05点11分
level 3
此题我有意把一些C++语法知识放在了一起,为的是使基础不好的人产生混乱。因为基础知识掌握不好的人,我相信,是解决不了我的问题的。但基础好的人,一眼就能看透这个小程序。我用此法目的是可以筛去一些基础不好的人的回答,省事。
2014年11月17日 17点11分
6
level 3
我不爱死记硬背这三个this所指的是同一个对象,求解。
2014年11月20日 15点11分
7