C++中的构造函数委托
我们将在本文中了解构造函数委托是什么。当一个构造函数调用同一类的其他构造函数时,这就是构造函数委托。此功能出现在C++11版本中。
让我们看看以下程序,尝试分析这段代码中有哪些难点。
示例
#include <iostream> using namespace std; class MyClass { int a, b, c; public: MyClass(){ a = b = c = 0; } MyClass(int c) { // Initializing a and b are redundent, only c initialization is needed here a = 0; b = 0; this->c = c; } void display(){ cout << "a : " << a << ", b : " << b << ", c : " << c; } }; main() { MyClass my_obj(5); my_obj.display(); }
输出
a : 0, b : 0, c : 5
我们可以看到,此代码运行正常,但这段代码中有一些冗余代码。无参数的构造函数可以将a和b的值设置为1。因此,如果我们在第二个构造函数中使用第一个构造函数,这样会更加有效。因此,我们必须使用一个名为构造函数委托的方法。
示例
#include <iostream> using namespace std; class MyClass { int a, b, c; public: MyClass(){ a = b = c = 0; } MyClass(int c) : MyClass(){ //using constructor delegation this->c = c; } void display(){ cout << "a : " << a << ", b : " << b << ", c : " << c; } }; main() { MyClass my_obj(5); my_obj.display(); }
输出
a : 0, b : 0, c : 5
广告