我正在用 C++ 制作一个日历应用程序,并且根据提供的信息为约会类制作大量重载构造函数(例如,如果我有事件的开始时间但没有结束时间,并且位置,但没有附加联系人)
class Appointment {
public:
//overloaded Constructors
Appointment();
Appointment(Date);
Appointment(Date,Date);
Appointment(Date,Date,std::string);
Appointment(Date,Date,std::string,std::string);
Appointment(Date,Date,std::string,std::string,Contact);
等等。等等。有更好的方法吗?
最佳答案
您可以:
创建对象(一个有效的对象),然后通过接口(interface) setter 设置其属性(因为对象似乎可以具有可变数量的属性,这似乎是一个不错的选择)
使用默认参数,例如
Appointment(Date=getDefaultDate(), Date=getDefaultDate(), std::string=getDefaultString(), std::string=getDefaultString(), Contact=getDefaultContact());
这实际上归结为您喜欢如何处理和初始化对象。
一个重要的旁注:在大型生产代码库中,默认参数是一个经常不受欢迎的 C++ 功能,因为它可能会妨碍可读性和/或在特定场景中使调试变得更加困难(特别是当发生不需要的事情并且您没有考虑选择默认参数,默认参数are specified on the declaration,这也可能向开发人员“隐藏”潜在问题)
关于c++ - 拥有大量重载的类构造函数是否被认为是不好的编程实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049126/