时间:2021-05-20
delete删除运算符
释放内存块。
语法
备注
cast-expression 参数必须是指向以前分配给使用 new 运算符创建的对象的内存块的指针。 delete 运算符的结果类型为 void,因此它不返回值。例如:
对指向不使用 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
有两个语法变体:一个针对单一对象,另一个针对对象数组。以下代码片段演示了它们之间的差异:
以下两种情况会生成未定义的结果:在对象中使用 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(禁用语言扩展)编译器选项进行编译。
相等运算符可比较指向同一类型的成员的指针。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++三元运算符?:C++有3种运算符:算数运算符、关系运算符和逻辑运算符。运算符在计算机中的执行顺序运算符用来构成表达式并指示计算机执行计算,其基本特性就是优
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运
众所周知,C,C++,python等语言都有运算符,那么Lua也不例外,因为它是C写的嘛!Lua分为主要三类运算符,分别是算术运算符,关系运算符,逻辑运算符,还
C++中运算符&和&&、|和||的详解及区别简介:&&是逻辑与运算符,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型&与|既可以进行逻辑运算,又可以
在C#中常用到的运算符有条件运算符,is运算符,as运算符,typeof运算符等等,接下来在文章中将为大家具体介绍各个运算符的使用方法条件运算符条件运算符用(&