C++ 中的私有解構函式
下面將探討 C++ 中解構函式為私有時的具體情況。我們來看一些示例程式碼來了解基本原理。
此程式碼具有私有解構函式,但不會生成任何錯誤,因為沒有建立物件。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class(){
//private destructor
}
};
int main() {
}由於試圖建立一個物件,但編譯器會發現無法訪問解構函式,因此在該程式中,這將導致編譯錯誤。因此,它無法在完成任務後被銷燬。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class obj;
}輸出
[Error] 'my_class::~my_class()' is private
現在,如果我們為該類建立一個指標,則不會產生錯誤,因為沒有建立實際物件。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj;
}如果使用 new 運算子建立一個物件,則也不會產生任何錯誤。編譯器認為由程式設計師負責從記憶體中刪除物件。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj = new my_class;
}輸出
現在,如果我們新增 delete 語句來刪除物件,則它將為私有解構函式生成錯誤。
示例
#include <iostream>
using namespace std;
class my_class {
private:
~my_class() {
//private destructor
}
};
int main() {
my_class *obj = new my_class;
delete obj;
}輸出
[Error] 'my_class::~my_class()' is private
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP