【问题标题】:Invoking overload constructor within constructor在构造函数中调用重载构造函数
【发布时间】:2015-06-10 13:10:07
【问题描述】:
我想知道在 C++ 中是否可以在另一个构造函数中运行构造函数重载。我知道使用常规方法是可能的。我想做什么:
class Foo
{
public:
Foo();
Foo(int val);
};
Foo::Foo()
{
Foo(1);
}
Foo:Foo(int val)
{
std::cout << val;
}
这不适合我。我正在尝试创建 2 个构造函数,一个女巫接受参数,一个将其设置为默认值(无效的)。我会获得所有帮助。
【问题讨论】:
标签:
c++
constructor
operator-overloading
【解决方案1】:
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;
}