Điều này có xóa tất cả các con trỏ hay thực hiện điều này chỉ cần xóa con trỏ đầu tiên p1?xóa nhiều con trỏ trong một dòng. C++
delete p1,p2,p3,p4,p5;
Điều này có xóa tất cả các con trỏ hay thực hiện điều này chỉ cần xóa con trỏ đầu tiên p1?xóa nhiều con trỏ trong một dòng. C++
delete p1,p2,p3,p4,p5;
Nó tương đương với:
(((((delete p1),p2),p3),p4),p5);
Nghĩa là, nó delete
s p1
và sau đó các nhà điều hành dấu phẩy được áp dụng cho các kết quả (trong số đó có không có) và p2
. Các biểu thức p2
đến p5
được đánh giá đơn giản và kết quả bị loại bỏ.
Nó sẽ xóa mục đầu tiên.
Toán tử dấu phẩy đánh giá những gì ở phía trước dấu phẩy rồi loại bỏ nó.
Do '' là dấu phẩy điều hành rõ ràng chỉ là đối tượng đầu tiên chỉ để bị xóa, trong khi phần còn lại của biểu thức được đánh giá và kết quả sẽ bị loại bỏ:
class A{
public:
string name_;
A(){}
A(string name):name_(name){}
~A(){cout<<"~A"<<name_;}
};
int main(){
A* a1=new A("a1");
A* a2=new A("a2");
delete a1, a2;
cout<<"\n.....\n";
delete a2, a1;
//...
đầu ra:
~ Aa1
....
~ Aa2
Tại sao bạn không thử nó? – Tushar
Nó sẽ xóa cái cuối cùng. Tra cứu toán tử dấu phẩy (một cái gì đó Java không có tình cờ). – john
@ john Tôi nghĩ rằng nó sẽ xóa cái đầu tiên. 'xoá' có mức ưu tiên cao hơn', ' – Tushar