C++编程问题:delete p1,p2

来源:百度知道 编辑:UC知道 时间:2024/07/12 13:55:57
请问一下C++的大虾们,delete p1,p2; 和delete p1; delete p2;
有什么区别,在vc6.0 上编程,二者有不同的结果。

注意,delete和,,都是运算符,因此都可以出现在表达式中。而;用来分隔语句,一个表达式也构成表达式语句,因此:
delete p1;delete p2;是两条表达式语句,分别将p1和p2所指向的动态分配空间收回,而delete p1,p2;是一条表达式语句,而,是运算符中优先级最低的,所以,delete p1,p2的意思等于(delete p1),p2。什么意思呢?回收p1,然后对p2求值并返回。实际上,如果p2的值没有被进一步用到,编译器甚至优化成什么也不做,除非是像f=(delete p1,p2);或delete p1,++p2;这样时,p2才必须求值。