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

来源:百度知道 编辑:UC知道 时间:2024/06/18 10:49:18
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类的成员函数,在非调试版本是内联的。

1、得到类指针。
2、CView的成员。