深入浅出mfc 第二版 92页 的问题

zengjun100 2009-09-18 09:00:01
在该书的那页有以下代码:
//之前有一些仿MFC类的定义代码

CMyWinApp theApp;
viod main()
{
CWinApp* pApp = AfxGetApp();
//....
}

然而我对后面紧跟的一段话似乎有些不解,“其中pApp指向theApp全局对象”,这里pApp的类型明明是CWinApp,他怎么就说pApp指向的是theApp呢?

请各位帮忙解释一下:
...全文
161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liumenghappy 2009-10-24
  • 打赏
  • 举报
回复
CMyWinApp是从CWinApp派生的,父类CWinApp指针可以指向子类CMyWinApp
zengjun100 2009-10-24
  • 打赏
  • 举报
回复
无语了...
今天闲来无聊,便追踪代码才知道,原来上面的代码不是微软的代码,而是候俊杰自己改写的,
zengjun100 2009-09-22
  • 打赏
  • 举报
回复
额。。请看下面的代码

//CWinApp类的部分定义
class CWinApp : public CWinThread
{
public:
CWinApp* m_pCurrentWinApp;
public:
//...
m_pCurrentWinApp = this;//这里的this指针应该
//是指向CWinApp的对象吧?
//...
};

//...

//全局函数AfxGetApp
CWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;//这里的m_pCurrentWinApp应该是
//CMyWinApp从CWinApp继承而来的
//成员变量,和基类的
// m_pCurrentWinAmp无关吧,
//但是好像此变量没有被初始化哦,
//哪儿来的值呢?

}

我就是这个问题有点昏。。。

xwsn007 2009-09-19
  • 打赏
  • 举报
回复
CMyWinApp是CWinApp的子类,c++里是可以用父类类型的指针接收一个子类对象的地址的。不然多态就无从谈起了
leewon1988 2009-09-19
  • 打赏
  • 举报
回复
多态啊。。。
I_NBFA 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 i_nbfa 的回复:]
CMyWinApp是CWinApp的基类.
[/Quote]
汗, 说反了, CWinApp是CMyWinApp的基类
I_NBFA 2009-09-18
  • 打赏
  • 举报
回复
CMyWinApp是CWinApp的基类.
NewJerryj 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 zengjun100 的回复:]
在该书的那页有以下代码:
//之前有一些仿MFC类的定义代码

CMyWinApp theApp;
viod main()
{
CWinApp* pApp = AfxGetApp();
//....
}

然而我对后面紧跟的一段话似乎有些不解,“其中pApp指向theApp全局对象”,这里pApp的类型明明是CWinApp,他怎么就说pApp指向的是theApp呢?

请各位帮忙解释一下:
[/Quote]

你是第一遍看这本书吗?
看完一遍后,记得还要看一遍,然后再看一遍


jackvs 2009-09-18
  • 打赏
  • 举报
回复
这就是C++的神奇之处了,CMyWinApp派生自CWinApp,故这里呢,CWinApp可以称之为基类指针。
换言之,它能够指向任何从它派生的类的结构地址。
所以说呢,这里的pApp指向的就是theApp。
~_~
feilinhe 2009-09-18
  • 打赏
  • 举报
回复
AfxGetApp(); 返回的就是theApp
xylicon 2009-09-18
  • 打赏
  • 举报
回复
CWinApp* pApp = AfxGetApp(); // pApph好明显是定义为一个CWinApp的指针了

AfxGetApp(); 获取的就是theApp全局对象的指针

综上所述,"其中pApp指向theApp全局对象" 这句话成立
oyster2008 2009-09-18
  • 打赏
  • 举报
回复
CMyWinApp是从CWinApp派生的
zoulie 2009-09-18
  • 打赏
  • 举报
回复
pApp 是CWinApp类型指针
*pApp的值就是theApp

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧