在构造函数中调用重载构造函数
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;
}
我想知道在 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;
}