最近在看MFC源代码,发现一个问题,对于非静态的函数OnOK(),MFC生成的源代码调用方式是CDialog::OnOK(),这种调用方式是怎么回事?如果不是静态的函数,C++会默认给一个this指针作为参数,直接OnOK()调用就可以了,可这里他又显示地使用了CDialog::OnOK(),有没有人知道是怎么回事,解释一下,不胜感激~!

解决方案 »

  1.   

    非静态成员函数是需要用对象来访问的啊,这个是什么意思呢?
    ===========
    这个很简单啊,比如你的类是A类,里面有一个函数a,如果a是静态的函数,可以用:A::a()来调用,如果a不是静态的函数,那么你必须先定义A类的一个对象A m_a;然后再调用m_a.a();不过,这个和你所问的问题无关,上面的CDialog::OnOK并不是静态成员函数的问题,而是在CDialog的派生类中重载OnOk函数时由于要用到基类的OnOK,所以在CDialog的派生类的OnOK函数中调用CDialog::OnOK;这个是调用基类的函数,与上面说的没有关系。