在构造函数中使用默认参数

时间:2013-10-12 14:45:47

标签: c++ visual-c++

是否可以使用默认参数创建构造函数。 像这样的东西

Object(int size = 1) {
//SMTH
}

我试图在视觉工作室中这样做,但错误发生了。 是否可以使用默认参数创建构造函数,或者仅使用重载?

修改

有可能,抱歉发布这个问题,我是c ++的新手。问题是我在源文件(cpp)中声明了默认参数,我已经改变了我的类,它运行得很好。

class MyClass
{
public:
    MyClass (int i = 0, std::string s = "");  // constructor declared

private:
    int x;
    int y;
    std::string z;
};

MyClass :: MyClass(int i, std::string s)     // constructor defined
{
    x = 100;
    y = i;
    z = s;
}

1 个答案:

答案 0 :(得分:3)

是的,可以使构造函数具有默认参数。

关于您的特定示例的两个警告:

  • 确保您没有no-args构造函数,因为这会导致歧义。
  • 您可能希望制作此构造函数explicit,以便它不会用于从intObject的隐式转换。