我读了这个问题“C++ Abstract Class: constructor yes or no?”以及属于它的答案。
但是根据答案,我理解我们需要构造函数来初始化它的数据成员,但是我可以使用其成员函数,如我的派生类中的setter函数来初始化数据成员,所以为什么定义构造函数很重要吗?
答案 0 :(得分:2)
默认构造函数定义和成员初始化使类自包含关于正确的设置条件(有效状态)。
对于类客户端(包括继承类),使用setter方法来操作类实例是可选的。
您可以考虑添加更多构造函数签名,客户端可以使用这些签名通过一次调用来初始化类成员,并且不要求这些签名者应用额外的setter调用。
这取决于特定的用例,最终更方便和语义正确。
答案 1 :(得分:1)
有两个原因:
可能更多。