在构造函数中调用重载构造函数

Invoking overload constructor within constructor

我想知道在 c++ 中是否可以 运行 在另一个构造函数中重载构造函数。我知道可以使用常规方法。我想做什么:

class Foo
{
public:
     Foo();
     Foo(int val);
}; 

Foo::Foo()
{
     Foo(1);
}

Foo:Foo(int val)
{
     std::cout << val;
}

这不适合我编译。我正在尝试创建 2 个构造函数,一个 接受参数,另一个将其设置为默认值(无效的)。我会拒绝所有帮助。

这叫做构造函数委托:

class Foo
{
public:
     Foo();
     Foo(int val);
}; 

Foo::Foo() : Foo(1)
{
}

Foo:Foo(int val)
{
     std::cout << val;
}

在这种情况下,您也可以使用默认参数:

class Foo
{
public:
     Foo(int val = 1);
}; 

Foo:Foo(int val /* = 1 */)
{
     std::cout << val;
}
class Foo
{
public:
     Foo();
     Foo(int val);
}; 

Foo::Foo() : Foo(1)
{
}

Foo:Foo(int val)
{
     std::cout << val;
}