(参考自http://www.cnblogs.com/jerry19880126/p/3551836.html)
1. 与java语言不同,对于C++,在创建类的对象时,编译器必须要在编译期间看到类定义,以确定要分配的内存大小,因此要定义一个类对象,文件常常要include包含类定义的头文件,这就引发了一个问题:如果头文件中的类定义(数据或接口)发生改变,那么include该头文件的所有文件都需要重新编译,这就增加了开发负担.
2.使用Handle class
1中问题在java中并不存在,因为java是基于指针(表面是引用)管理动态内存分配的对象的,而创建一个指向某类的指针只需要类的前置声明即可.由此启发,C++也可以采用这种方式"将对象实现细目隐藏于指针背后",例如一个名为Demo的类含有大量数据成员和函数成员,那么可以创建一个realDemo类存有这些成员,而Demo类只包含指向realDemo的指针,如下:
//"RealDemo.h" #ifndef REAFDEMO #define REALDEMO class RealDemo{ public: int fun1(); int fun2(int num); ... private: ... } #endif REALDEMO