2013-03-28 65 views
10

Đ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; 
+1

Tại sao bạn không thử nó? – Tushar

+3

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

+6

@ 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

Trả lời

18

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ỏ.

0

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ó.

3

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

Các vấn đề liên quan