委托构造函数
在C + + 03,有经常的情况下将一个构造函数在同一个类中调用另一个构造函数是有用的。不幸的是,这是用C + + 03不允许。通常这最终导致无论是重复的代码:
class Foo
{
public:
Foo()
{
// code to do A
}
Foo(int nValue)
{
// code to do A
// code to do B
}
};
(在哪里做的代码定义两次)
或使用一个()非构造函数来保持共同的代码都需要访问它的构造函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Foo
{
public:
Foo()
{
InitA();
}
Foo(int nValue)
{
InitA();
// code to do B
}
void InitA()
{
// code to do A
}
};