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

更新于: 30-7-2019

1000+浏览

开始您的职业生涯

通过完成此课程获得认证

开始
广告