现在的位置: 首页 > 综合 > 正文

class B 和 #include “CB.h” 声明的区别?

2014年02月17日 ⁄ 综合 ⁄ 共 886字 ⁄ 字号 评论关闭

class   B; 只是告诉编译器B是一个类,B的具体情况是什么则不告诉你(嘻嘻).  
#include   "CB.h"则把B的全部都给了你(恭喜了)  
   
所以后者更强力.前者的编译效率更高,在编译期间不管对自己无用的垃圾.把相关的东西推迟到LINK阶段做.  
   
当在A中声明一个B的成员变量或者仅使用B做为A中某个成员函数的参数或者仅仅做为成员函数返回值类型时,在前面使用class   B;即可,杀鸡不用宰牛刀.  
  如  
  class   A  
  {  
        B   m_one;  
        void   Func(B*);  
        B*   GetIt();  
        ...  
  };  
注意,如果你有任何展示B内部情况的任何代码,都需要使用#include   "CB.h"来提升以适应编译需求,比如在头文件中实现某个成员函数时使用了B的成员函数或者成员变量...      

当A由B继承时必须使用#include   "CB.h", 因为A在编译时就要明确知道B的细节,比如要知道B的成员  
  如:  
  class   A   :   public   B  
  {  
        ...  
  };  

------------------------------------------------------------------------------------------------

如果你在A里要包含B(包含B是啥子意思?),但是在B里却要使用A的某些信息,比如定义A类的变量,这个时候就要在B里说明 class A 了,是“说明”,不是“定义”!一定要清楚定义和说明的差别。  

  //CA.h  

  include   "b.h"  
  class   a{  
  ...

  }  

  //CB.h  

  class   a;  
  class   b{  
  a   var_a;

  ...
  }  

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sanfengshou/archive/2009/10/10/4651302.aspx

抱歉!评论已关闭.