我想知道在c ++中是否有可能在另一个构造函数中运行构造函数重载。我知道可以使用常规方法。我正在尝试做什么:
class Foo
{
public:
Foo();
Foo(int val);
};
Foo::Foo()
{
Foo(1);
}
Foo:Foo(int val)
{
std::cout << val;
}
这不适合我。我正在尝试创建2个构造函数,一个女巫接受参数,一个将其设置为默认值(虚假的一个)。我会帮助你。
答案 0 :(得分:2)
class Foo
{
public:
Foo();
Foo(int val);
};
Foo::Foo() : Foo(1)
{
}
Foo:Foo(int val)
{
std::cout << val;
}
答案 1 :(得分:1)
它被称为构造函数委派:
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;
}