优点:排版方便,无需担心类是否初始化。
缺点:在构造函数中执行操作引起的问题有:
1)构造函数中不易报告错误,不能使用异常。
2)操作失败会造成对象初始化失败,引起不确定状态。
3)构造函数内调用虚函数,调用不会派发到子类实现中,即使当前没有子类化实现,将来仍是隐患。
4)如果有人创建该类型的全局变量(虽然违背了),构造函数将在main()之前被调用,有可能破坏构造函数中暗含的假设条件。
结论:如果对象需要有意义的(non-trivial)初始化,考虑使用另外的Init()方法并(或)增加一个成员标记用于指示对象是否已经初始化成功。