如何避免使用默认构造函数?

时间:2016-10-13 04:52:35

标签: c++ class constructor

这是我目前课堂作业的一个问题。我需要在我的代码中只使用一个构造函数,而我无法弄清楚如何执行它。

class test {
  public:
     test(int x, int y, int z);
     (...)
  private:
     int x,y,z;
}

test::test(int x = 0, int y = 0, int z = 0){
  this -> x = x;
  this -> y = y;
  this -> z = z;
}

int main (){
  test test1, test2(1,2,3)
  (...)
}

目前,它不会编译,因为它说我没有匹配函数调用test1。我很确定使用int x = 0作为参数设置默认值...

1 个答案:

答案 0 :(得分:0)

默认参数值应该进入声明,而不是定义。

class test {
  public:
     test(int x = 0, int y = 0, int z = 0);
     (...)
  private:
     int x,y,z;
}

定义:

test::test(int x, int y, int z){
  this -> x = x;
  this -> y = y;
  this -> z = z;
}

当你在这里时,你可以养成使用构造函数初始化列表的好习惯:

test::test(int x, int y, int z):
    x(x), y(y), z(z)
{
}