为学MFC而自编的一道题
mfc吧
全部回复
仅看楼主
level 3
求基础知识好的人回答
2014年11月16日 21点11分 1
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 3
为什么三个地址值相同。
2014年11月16日 21点11分 3
level 9
挽尊.
2014年11月17日 03点11分 4
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
level 9
因为三个this都是指向m
2014年11月20日 16点11分 8
为什么说this指向同一个对象m呢,我在MSDN中没找到。
2014年11月20日 18点11分
1