关于CHelloDoc* GetDocument() 的一些问题 ?

class CHelloView : public CView
{
protected: // create from serialization only
 CHelloView();
 DECLARE_DYNCREATE(CHelloView)

// Attributes
public:
 CHelloDoc* GetDocument();
(略)
}
问题1:在这里面的 GetDocument()是不是作为一个对象指针?如果是对象指针的话,也就是说除了可以用变量作为指针名,还可以用函数体来作为指针名,我不知道这样理解对不对?
问题2:GetDocument()是属于CHelloDoc类的成员(或者对象)还是属于CHelloView类的成员(或者对象)?

问题补充:

那是不是说类似于 “类名*函数名” 这类形式的语句就是定义一个类指针。而‘类名*变量名 “这类形式的语句就是定义一个对象指针?不知道我的理解对不对
 
 
在VS中,用MFC应用程序向导生成SDI或MDI程序,会在视图类中加入这个函数。
类CHelloView中函数声明为:
CHelloDoc* GetDocument() const;   // 这是个返回值为CHelloDoc*的函数,返回与本视图连接的文档对象指针

一般,在CHelloView.h文件中还有如下代码。表示在非调试版本(如Release版本)中,本函数是内联的。这样不需函数调用,执行效率非常高。
#ifndef _DEBUG  // HelloView.cpp 的非调试版本是内联的
inline CHelloDoc* CHelloView::GetDocument() const
{ return reinterpret_cast<CHelloDoc*>(m_pDocument); }
#endif


可以看出你提问的答案:
1.  GetDocument()是一个函数,返回值是CHelloDoc*类型;
2.  GetDocument()是CHelloView类的成员函数,在非调试版本是内联的。
posted @ 2012-04-29 11:18  carbs  阅读(1020)  评论(0编辑  收藏  举报