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

Using default arguments in constructor

本文关键字:默认 参数 构造函数      更新时间:2023-10-16

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

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;
}

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

关于您的特定示例的两个注意事项:

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