在书中提到:
5. 为此类别加上一个default 构造式(也就是无参数之构造式)。这个条件常为
人所忽略,但它是必要的,因为若一个对象来自文件,MFC 必须先动态生成
它,而且在没有任何参数的情况下调用其构造式,然后才从文件中读出对象资
料。
对于这第5个条件不甚明白?望高手指教!

解决方案 »

  1.   

    就是从文件中序列化读入对象以动态生成的话,这个时候用new来创建一个新对象(这一步是CObject的序列化机制自动做的),是无法预先知道构造函数应该提供什么参数的,因此简单化就是不用参数,调用默认构造函数。因此,如果你没有提供默认构造函数,那么就会调用失败。另一方面,也可能你修改了基类的默认构造函数为public的(CObject的默认构造函数为protected的),那么子类不提供默认构造函数也可以,但是子类特有的数据初始化就可能得不到调用(如果没有放在合适的地方的话)。