在MFC编程中,没有实例化的类竟可以调成员函数,为什么???class CRoundDlg : public CDialog
{
...
afx_msg UINT OnNcHitTest(CPoint point);
...
}UINT CRoundDlg::OnNcHitTest(CPoint point)
{
UINT nHitTest=CDialog::OnNcHitTest (point);
//该处若写成UINT nHitTest=CRoundDlg::OnNcHitTest (point);则出现非法操作
//此处CDialog类在那实例化?竟然何以调用该类的成员函数??请赐教!!!
return (nHitTest == HTCLIENT)? HTCAPTION: nHitTest;
}
{
...
afx_msg UINT OnNcHitTest(CPoint point);
...
}UINT CRoundDlg::OnNcHitTest(CPoint point)
{
UINT nHitTest=CDialog::OnNcHitTest (point);
//该处若写成UINT nHitTest=CRoundDlg::OnNcHitTest (point);则出现非法操作
//此处CDialog类在那实例化?竟然何以调用该类的成员函数??请赐教!!!
return (nHitTest == HTCLIENT)? HTCAPTION: nHitTest;
}
还有一种情况就是,一个类拥有静态成员函数,这种成员函数可以不需要实例化而直接运行,MFC有很多这方面的例子
用CRoundDlg类调用它的成员函数也应该是可以的,可是为什么调用
UINT nHitTest=CRoundDlg::OnNcHitTest (point);
就会无穷递归,当然非法操作(栈溢出?)
不解,请赐教!!!