您的位置:首页 > 其它

从构造函数来你的新功能

2016-06-28 13:58 204 查看
在这种方式中,代码重复被保持到最小值。
同样,你可以在你想写一个函数来重新初始化一个班回到默认值的情况下,发现自己。因为你可能已经有了一个这样的构造函数,所以你可能会试图从你的成员函数中调用构造函数。然而,试图直接调用构造函数通常会导致意外的行为。许多开发人员只需在初始化函数中从构造函数中复制代码,这将起作用,但会导致重复的代码。在这种情况下,最好的解决办法是将代码从构造函数来你的新功能,并有构造函数调用你的函数来初始化数据工作:

class Foo
{
public:
Foo()
{
Init();
}

Foo(int value)
{
Init();
// do something with value
}

void Init()
{
// code to init Foo
}
};

T是相当常见的包括()函数,初始化成员变量的默认值,然后让每个构造函数调用()函数之前做它的参数的具体任务。这最大限度地减少重复代码,允许您显式调用()从你喜欢的地方。

一个小警告:当使用()函数和动态分配的内存要小心。因为()函数可以被任何人在任何时间,动态分配的内存可能已被分配时,称为()。要妥善处理这种情况,它可以稍微混乱,因为一个非空指针可以是动态分配的内存或一个未初始化的指针!

委托构造函数在C++ 11

从C++ 11,构造函数可以调用其他构造函数。这个过程被称为委托构造函数(或构造函数链)。

有一个构造函数调用另一个,在成员初始化列表只需调用构造函数。这是一个直接调用另一个构造函数的情况下是可以接受的。适用于我们上面的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Foo
{
private:

public:
Foo()
{
// code to do A
}

Foo(int value): Foo() // use Foo() default constructor to do A
{
// code to do B
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: