国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++編程中刪除運(yùn)算符與相等運(yùn)算符的使用解析

2020-01-26 14:46:35
字體:
供稿:網(wǎng)友

delete刪除運(yùn)算符
釋放內(nèi)存塊。
語法

[::] delete cast-expression[::] delete [ ] cast-expression

備注
cast-expression 參數(shù)必須是指向以前分配給使用 new 運(yùn)算符創(chuàng)建的對(duì)象的內(nèi)存塊的指針。 delete 運(yùn)算符的結(jié)果類型為 void,因此它不返回值。例如:

CDialog* MyDialog = new CDialog;// use MyDialogdelete MyDialog;

對(duì)指向不使用 new 分配的指針使用 delete 將產(chǎn)生不可預(yù)知的結(jié)果。但是,可以對(duì)值為 0 的指針使用 delete。此設(shè)置意味著,當(dāng) new 失敗并返回 0 時(shí),刪除已失敗 new 操作的結(jié)果不會(huì)造成損害。
new 和 delete 運(yùn)算符還可用于內(nèi)置類型(包括數(shù)組)。如果 pointer 指的是某一數(shù)組,請(qǐng)?jiān)?pointer 前放置空括號(hào):
int* set = new int[100];
//use set[]
delete 運(yùn)算符delete [] set;
對(duì)對(duì)象使用 delete 運(yùn)算符將釋放其內(nèi)存。在刪除對(duì)象后取消引用指針的程序可能會(huì)產(chǎn)生不可預(yù)知的結(jié)果或崩潰。
將 delete 用于釋放 C++ 類對(duì)象的內(nèi)存時(shí),將在釋放該對(duì)象的內(nèi)存之前調(diào)用該對(duì)象的析構(gòu)函數(shù)(如果該對(duì)象具有析構(gòu)函數(shù))。
如果 delete 運(yùn)算符的操作數(shù)是可修改的左值,則在刪除該對(duì)象后未定義其值。
使用 delete
有兩個(gè)語法變體:一個(gè)針對(duì)單一對(duì)象,另一個(gè)針對(duì)對(duì)象數(shù)組。以下代碼片段演示了它們之間的差異:

// expre_Using_delete.cppstruct UDType {};int main(){  // Allocate a user-defined object, UDObject, and an object  // of type double on the free store using the  // new operator.  UDType *UDObject = new UDType;  double *dObject = new double;  // Delete the two objects.  delete UDObject;  delete dObject;   // Allocate an array of user-defined objects on the  // free store using the new operator.  UDType (*UDArr)[7] = new UDType[5][7];  // Use the array syntax to delete the array of objects.  delete [] UDArr;}

以下兩種情況會(huì)生成未定義的結(jié)果:在對(duì)象中使用 delete 的數(shù)組形式 (delete [ ]),并在數(shù)組中使用 delete 的非數(shù)組形式。

delete 的工作方式
將調(diào)用函數(shù)運(yùn)算符 delete。
對(duì)于不是類類型(class、struct 或 union)的對(duì)象,將調(diào)用全局 delete 運(yùn)算符。對(duì)于類類型的對(duì)象,如果刪除表達(dá)式以一元范圍解析運(yùn)算符 (::) 開始,則會(huì)在全局范圍中解析釋放函數(shù)的名稱。否則,delete 運(yùn)算符將在釋放內(nèi)存之前為對(duì)象調(diào)用析構(gòu)函數(shù)(如果指針不為 null)。可為每個(gè)類定義 delete 運(yùn)算符;如果給定類不存在這種定義,則會(huì)調(diào)用全局 delete 運(yùn)算符。如果刪除表達(dá)式用于釋放其靜態(tài)對(duì)象具有虛擬析構(gòu)函數(shù)的類對(duì)象,則將通過對(duì)象的動(dòng)態(tài)類型的虛擬析構(gòu)函數(shù)解析釋放函數(shù)。


相等運(yùn)算符:== 和 !=

語法

   expression == expressionexpression != expression

備注
二元相等運(yùn)算符將嚴(yán)格比較其操作數(shù)的相等性或不相等性。
相等運(yùn)算符(等于 (==) 而不等于 (!=))的優(yōu)先級(jí)低于關(guān)系運(yùn)算符的優(yōu)先級(jí),但其行為類似。這些運(yùn)算符的結(jié)果類型為 bool。
如果這兩個(gè)操作數(shù)具有相同的值,則相等運(yùn)算符 (==) 返回 true (1);否則返回 false (0)。如果操作數(shù)不具有相同的值,則不相等運(yùn)算符 (!=) 返回 true;否則返回 false。
!= 的運(yùn)算符關(guān)鍵字
not_eq 運(yùn)算符是 != 的文本等效項(xiàng)。訪問程序中的 not_eq 運(yùn)算符的方式有兩種:包括頭文件 iso646.h,或使用 /Za(禁用語言擴(kuò)展)編譯器選項(xiàng)進(jìn)行編譯。

// expre_Equality_Operators.cpp// compile with: /EHsc#include <iostream>using namespace std;int main() {  cout << boolalpha     << "The true expression 3 != 2 yields: "     << (3 != 2) << endl     << "The false expression 20 == 10 yields: "     << (20 == 10) << endl;}

相等運(yùn)算符可比較指向同一類型的成員的指針。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 家居| 湘阴县| 高碑店市| 方城县| 桦甸市| 开原市| 镇沅| 潮安县| 卢龙县| 呼伦贝尔市| 玉田县| 西城区| 乌恰县| 岗巴县| 馆陶县| 珠海市| 嘉鱼县| 瓮安县| 永登县| 太康县| 曲松县| 桦南县| 永胜县| 天津市| 湖北省| 丰镇市| 名山县| 浪卡子县| 西平县| 江阴市| 永昌县| 肥乡县| 信丰县| 焦作市| 泰兴市| 清镇市| 杭锦后旗| 卢氏县| 集贤县| 星子县| 海晏县|