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

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

C++編程中刪除運算符與相等運算符的使用解析

2020-05-23 14:10:41
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++編程中刪除運算符與相等運算符的使用解析,delete和==以及!=運算符的使用是C++入門學習中的基礎知識,需要的朋友可以參考下
 

delete刪除運算符
釋放內存塊。
語法

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

備注
cast-expression 參數必須是指向以前分配給使用 new 運算符創建的對象的內存塊的指針。 delete 運算符的結果類型為 void,因此它不返回值。例如:

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

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

// 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;}

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

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


相等運算符:== 和 !=

語法

   expression == expressionexpression != expression

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

// 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;}

相等運算符可比較指向同一類型的成員的指針。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稻城县| 介休市| 南皮县| 宜良县| 大同市| 闽侯县| 德格县| 定兴县| 福海县| 夏邑县| 若羌县| 连城县| 郴州市| 康乐县| 五大连池市| 盐亭县| 罗城| 通榆县| 禹城市| 乐平市| 莲花县| 邢台市| 龙里县| 南汇区| 阜康市| 马公市| 溧水县| 迭部县| 临夏县| 铜川市| 临汾市| 桐乡市| 泰和县| 莱西市| 遂川县| 白河县| 集安市| 开化县| 林甸县| 清镇市| 东城区|