请问,怎样判断调用的是不是静态方法,请进

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:39:38
void CSingleDocTemplate::AddDocument(CDocument* pDoc)
{
ASSERT(m_pOnlyDoc == NULL); // one at a time please
ASSERT_VALID(pDoc);

CDocTemplate::AddDocument(pDoc);//如何判定这是在调用父类的静态方法,还是调用父类的普通方法,因为这里用了:: 所以不容易区分
m_pOnlyDoc = pDoc;
}
我个人觉得50573750回答是错的,this指针并不是需要显示的加入函数中,
iceser的解释仍觉得不能够让人眼睛一亮,

普通方法。

你见过有人在派生类里重写基类的静态方法的吗?

类似于这样的调用方式很常见,因为派生类重写了基类的方法,是希望增加一些自定义的处理,同时希望继续调用基类的方法来进行处理。而这种处理逻辑对静态方法来说,并不合理。

另外从上下文的意思来看,这里应该也是调用基类的普通方法。

如果仍然不确定,可以尝试修改代码来证明。

CDocTemplate::AddDocument(pDoc);
改为
( ( CDocTemplate * ) this )->AddDocument(pDoc);

如果能正常编译运行,那肯定就是普通方法了,否则就是静态方法。

另外,也可以直接找到该基类的头文件定义来查看。


应该是静态方法,要不然,第一个参数是&class_object就是this指针。

好像很容易判断。

不明白发消息问我;