• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++编程中删除运算符与相等运算符的使用解析

C++编程中删除运算符与相等运算符的使用解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++编程,c++编程软件,c++编程思想,c++编程软件下载,c++游戏编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

delete删除运算符
释放内存块。
语法

[::] delete cast-expression
[::] delete [ ] cast-expression
</div>

备注
cast-expression 参数必须是指向以前分配给使用 new 运算符创建的对象的内存块的指针。 delete 运算符的结果类型为 void,因此它不返回值。例如:

CDialog* MyDialog = new CDialog;
// use MyDialog
delete MyDialog;
</div>

对指向不使用 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.cpp
struct 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;
}

</div>

以下两种情况会生成未定义的结果:在对象中使用 delete 的数组形式 (delete [ ]),并在数组中使用 delete 的非数组形式。

delete 的工作方式
将调用函数运算符 delete。
对于不是类类型(class、struct 或 union)的对象,将调用全局 delete 运算符。对于类类型的对象,如果删除表达式以一元范围解析运算符 (::) 开始,则会在全局范围中解析释放函数的名称。否则,delete 运算符将在释放内存之前为对象调用析构函数(如果指针不为 null)。可为每个类定义 delete 运算符;如果给定类不存在这种定义,则会调用全局 delete 运算符。如果删除表达式用于释放其静态对象具有虚拟析构函数的类对象,则将通过对象的动态类型的虚拟析构函数解析释放函数。


相等运算符:== 和 !=

语法

   expression == expression
expression != expression
</div>

备注
二元相等运算符将严格比较其操作数的相等性或不相等性。
相等运算符(等于 (==) 而不等于 (!=))的优先级低于关系运算符的优先级,但其行为类似。这些运算符的结果类型为 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;
}

</div>

相等运算符可比较指向同一类型的成员的指针。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++的虚析构详解及实例代码
  • C++二分查找(折半查找)算法实例详解
  • C++ 中函数重载、覆盖与隐藏详解
  • 学习C++编程的必备软件
  • C++调用Python基础功能实例详解
  • C++中函数重载实例详解
  • C++模版函数详解
  • 详解C++11中的右值引用与移动语义
  • C++详解默认参数的构造函数及简单实例代码
  • C++如何动态的生成对象详解

相关文章

  • 2017-05-28C++归并排序算法实例
  • 2017-05-28C语言实现txt数据读入内存/CPU缓存实例详解
  • 2017-05-28C++ Custom Control控件向父窗体发送对应的消息
  • 2017-05-28C++中Cbitmap,HBitmap,Bitmap区别及联系
  • 2017-05-28C语言中fchdir()函数和rewinddir()函数的使用详解
  • 2017-05-28C++面向对象实现五子棋小游戏
  • 2017-05-28C++多文件变量解析
  • 2017-05-28基于稀疏图上的Johnson算法的详解
  • 2017-05-28C/C++中的typedef和#define详解
  • 2017-05-28详解C++编程中的重载流插入运算符和流提取运算符

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 浅谈C++ 类的实例中 内存分配详解
    • 一个string类的简单实现案例
    • 深入解析C语言中typedef的四个用途
    • 详解C++中变量的初始化规则
    • 数据结构之数组Array实例详解
    • 浅析c/c++中函数的参数传递
    • Linux环境g++编译GDAL动态库操作方法
    • C++计算ICMP头的校验和实例
    • C/C++ ip地址与int类型的转换实例详解
    • VC中SendMessage和PostMessage的区别

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有