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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP