空类 如果你没有声明,编译器会为它声明一个default构造函数,copy构造函数,析构函数,赋值操作符。

  1. class Empty{}; 
  2.  
  3. //--------- 
  4. class Empty 
  5. public
  6.   Empty(){...} 
  7.   Empty(const Empty& ths){...} 
  8.   ~Empty(){...} 
  9.   Empty& operator=(cosnt Empty& rhs){...} 
  10. }; 

唯有当这些函数被需要(被调用),它们才会被编译器创建出来。

当声明了一个构造函数,编译器就不再为类创建default构造函数。