Too long to explain;
Too difficult to explain;do You know "勿在浮沙筑高楼"?

解决方案 »

  1.   

    c:  GetCurrentTime是CTime的静态成员,所以可以在没有实例的时候直接调用
    d:  直接使用::调用的函数一般都是API(我是说一般),一般都是在一个类的函数里这样使用,因为这时命名空间(不知这里是否可以使用这个术语)是这个类,如果直接使用API,编译会出错,而加了::,命名空间就到了这个类的上一级(象目录一样),这个命名空间如何称呼我也不知道,反正API都在这个空间里。希望我的回答不是误人子弟,同时希望高手指正错误。
      

  2.   

    ::是引用全局函数,可以这些说,土方法:如何你是在Dialog中使用ShowWindow(),你可以不用写成obj.showwindow(),Dialog从cwnd派生的,cwnd中封装了showwindow,所以就不用写,也就是说你在你的类中如果使用到该类的及父类的函数的话,可以不用写,否则你就得写全称,一般使用::是使用WIN API,至于CTime t = CTime::GetCurrentTime();,GetCurrentTime()是静态函数,不过除了CTime与COleDateTime的GetCurrentTime();之外好像是不多了,我自已都不知道我在说啥。
      

  3.   

    a)因为那是成员函数,本成员的方法调用本成员的函数,即使是从父类继承来的,也不需要obj.....什么的。看C++基础的关于继承方面的文章
    b) 是。有点象重载。不过对于API函数在MFC里一般用 ::开头
    c) 因为那是静态函数。使用static关键字的函数才可用。参考C++书籍关于类、声明一类章节
    d) 就是b的答案了,那是全局(比如 API函数)建议:买本C++与面向对象,从字符界面的DOS类编程开始学起,基础一定要非常非常扎实
    然后找本VC2.0一类老书(如果有的话),从win32 SDK学起,不用学的太深理解即可。
      

  4.   

    真的是好难回答的题目,不过把这些问题搞清楚确实很有用:
    a) 在程序中看到的不加任何前缀的函数,可能是该类自己(或父类)的成员函数,可能是全局函数(包括API函数,它也算全局函数)。反过来说,自己的成员函数可以直接调用,就好像打市话不用拨区号一个道理,拨了也无所谓(比如this->GetDlgItem(……);)c) 用到“类名::成员函数”这种调用形式的可就多了,
       1. 构造器,比如你要用一个已知的size,可这样写  CSize size=CSize::CSize(40,50);
          再如CTime time=CTime::CTime(2000,12,25,18,0,0);
       2. 调用父类的成员函数,为了与自己的成员函数相区分,要加上父类名:
          比如:CMyDialog::OnTimer()
               {
                ……
                   CDialog::OnTimer();
               }
       3. 某个类的静态函数,上面好几位都说过了
       4. 还有要提的是静态成员变量,常见于参数中:
          比如CFile::modeReadOnly