我有课程日期和时间。我正在使用公共构造函数创建一个Onetime类,但我不确定如何创建新的日期和时间内联。
schedule[0]= new Onetime("see the dentist",
Date(2013, 11, 4),
Time(11, 30, 0),
Time(12, 30, 0));
class Onetime {
public:
Onetime( // what should I put here? )
}
答案 0 :(得分:5)
这是标准方法
class Onetime {
std::string description;
Date date;
Time from_time;
Time to_time;
Onetime(const std::string& description,
const Date& date,
const Time& from_time,
const Time& to_time)
: description(description),
date(date),
from_time(from_time),
to_time(to_time)
{
... rest of initialization code, if needed ...
}
...
};
答案 1 :(得分:2)
使用Date
和Time
或const Date &
和const Time &
为日期和时间参数声明类。通常,const &
适用于大型对象,以防止它们被不必要地复制。小对象可以使用const &
或不使用,无论您喜欢哪种。
// Onetime.h
class Onetime {
public:
Onetime(const std::string &description,
const Date &date,
const Time &startTime,
const Time &endTime);
private:
std::string description;
Date date;
Time startTime, endTime;
};
然后在.cpp
文件中定义构造函数。使用:
表示初始化列表以初始化成员变量。
// Onetime.cpp
Onetime::Onetime(const std::string &description,
const Date &date,
const Time &startTime,
const Time &endTime)
: description(description),
date(date), startTime(startTime), endTime(endTime)
{
}
最后,您可以完全按照自己的意愿创建Onetime
对象。如果您愿意,甚至可以省略new
关键字。 new
用于在堆上分配对象,在C ++中并不总是需要这样做(比如Java或C#,比如说)。
schedule[0] = new Onetime("see the dentist",
Date(2013, 11, 4),
Time(11, 30, 0),
Time(12, 30, 0));
答案 2 :(得分:1)
你可以,
class Onetime {
public:
Onetime(const std::string& message, const Date& date, const Time& start, const Time& end);
private:
std::string m_message;
Date m_date;
Time m_start;
Time m_end;
}
和
Onetime::Onetime(const std::string& message, const Date& date, const Time& start, const Time& end)
: m_message(message), m_date(date), m_start(start), m_end(end)
{
}
尽量避免使用new
,因为这是堆分配的内存并且获取成本很高(与基于堆栈的内存相比)。