Aus*_*yde 4 c++ implementation constructor
我试图在C++中实现一个DateTime类:
class DateTime {
public:
DateTime();
DateTime(time_t ticks);
DateTime(int day, int month, int year);
DateTime(int day, int month, int year, int hour, int minute, int second);
//...
private:
time_t ticks;
int day;
int month;
//...
}
Run Code Online (Sandbox Code Playgroud)
然后在申请中:
DateTime date1; //default constructor
Run Code Online (Sandbox Code Playgroud)
我知道c ++需要一个默认的构造函数,但是在这种情况下我该如何实现呢?
它应该将所有属性设置为0吗?这会让所有其他方法都有效,但看起来并不直观......
它应该只是让所有属性都未初始化吗?这将使它的方法都不起作用,但它似乎比0更直观,因为你还没有做任何事情.
它应该设置内部,bool initialized=false然后所有方法检查之前操作吗?
我对这一点不太确定.这样做有"标准"的方法吗?
默认构造函数是不通过C++必需的.如果你不知道它应该如何工作,你很可能不应该有一个很好的机会.如果你想要一个,最明显的事情可能是检索当前的日期和时间.
编辑:如果您没有明确定义任何ctors,那么编译器将为您生成默认的ctor和copy ctor.两者都不是一件特别糟糕的事情 - 如果你不确定你的数据应该如何初始化,那么这可能是完全合理的.
至于创建一个向量:不,你不必有一个默认的ctor来把东西放在一个向量中.通常,默认ctor用于初始化未分配任何值的项目.例如,std::vector<DateTime> x(10);创建一个包含10个DateTime对象的向量,每个对象都使用默认的ctor初始化.如果您没有(并且不想要)默认ctor,则可以传递DateTime用于初始化这些对象的实例:
DateTime party_time(12, 31, 1999);
std::vector<DateTime> x(10, party_time);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4976 次 |
| 最近记录: |