具有结构组件的类构造函数

时间:2013-03-11 19:09:25

标签: c++

我在一个类中定义一个构造函数,它接受5个参数来初始化字段。其中两个参数/字段来自Date结构。

Information(string NewName, Date start, Date finish,
            double newNumber, double newLevel);

这是正确的格式吗?

另外,我如何在int main ()中输入参数?像这样的东西?我如何将值放入结构参数中?他们会引用报价吗?

Information arguments("Susan Jones", "3/5/5", "3/5/5", 15, 58);

日期结构:

 struct Date
  {
    int month;
    int day;
    int year;
  };

2 个答案:

答案 0 :(得分:1)

最好将const引用传递给构造函数中使用的非基本类型。因此,请创建数据const&,而不仅仅是副本。更具体一点:

Information(const string& NewName,const Date& start,const Date& finish,
          double newNumber, double newLevel);

还假设Date有一个构造函数采用std::stringconst char*的方式调用构造函数是正确的(尽管看起来你正在调用另一个名为Paycheck的类的构造函数)

否则代码似乎合理。

答案 1 :(得分:0)

您展示的Information构造函数看起来很合理。对于中型或大型对象,您可能希望通过const Date&而不仅仅是Date,但对于像您这样的小/简单/快速对象,制作副本不应该是那么大的交易。这是“正常”的方式:

Information(const string& NewName, const Date& start, const Date& finish,
      double newNumber, double newLevel);

但是,"3/5/5"不是构建Date实例的正确方法。有两种方法,如下所示。第一个更容易理解,但第二个是更少的代码。

Date start;
start.month = 3;
start.day = 5;
start.year = 5;

Date finish;
start.month = 3;
start.day = 5;
start.year = 5;

Information arguments("Susan Jones", start, finish, 15, 58);

Information arguments("Susan Jones", {3,5,5}, {3,5,5}, 15, 58);