在构造函数

时间:2015-06-10 13:10:07

标签: c++ constructor operator-overloading

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

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

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

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

这不适合我。我正在尝试创建2个构造函数,一个女巫接受参数,一个将其设置为默认值(虚假的一个)。我会帮助你。

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;
}
相关问题