这是我目前课堂作业的一个问题。我需要在我的代码中只使用一个构造函数,而我无法弄清楚如何执行它。
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作为参数设置默认值...
答案 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)
{
}