#inlude "MySock.h" 和 class CMySock;有什么区别,互换好像不行吧

解决方案 »

  1.   

    就是引进文件头,一个是用#include 引进,一个是直接用类的声明。
      

  2.   

    是这样的:
    在一个头文件中:
    #inlude "MySock.h" 
    calss cs
    {
      public:
      CMySock m_Sock; //可以这样申明
      CMySock *m_pSock; //也可以这样申明
    };而
    class CMySock;calss cs
    {
      public:
      CMySock m_Sock; //不可以这样申明
      CMySock *m_pSock; //但可以这样申明
    };
    具体可以看看《Effective C++》。
      

  3.   

    Class CMySocket;
    表示下面要用到 CMySocket 这个类定义,
    #include "MySocket.h"
    表示要用到CMySocket里面的方法.
      

  4.   

    如sans所说
    之所以用class CMySock;的时候不能
    CMySock m_Sock;是因为这个时候要为m_Sock分配空间,但class CMySock的作用仅仅是声明有这个类存在,至于这个类所占空间是多大,不知道,所以不能这样用。能用class CMySock的地方尽量不要用#include "mysock.h",能够有效避免循环包含(就是a.h包含b.h,b.h又包含a.h的情况)。
      

  5.   

    能用class CMySock的地方尽量不要用#include "mysock.h",这样可以降低编译器的依赖性。可能会降低重新编译的时间。