2013-03-28 7 views
10

이렇게하면 모든 포인터가 삭제되거나 첫 번째 포인터 p1이 삭제됩니까?한 줄에 여러 개의 포인터를 삭제합니다. C++

delete p1,p2,p3,p4,p5; 
+1

당신은 그것을 왜 시도하지? – Tushar

+3

마지막으로 삭제합니다. 쉼표 연산자 (Java가 우발적으로 가지고있는 것은 아님)를 찾으십시오. – john

+6

@john 나는 첫 번째 것을 삭제한다고 생각한다. 'delete'는','보다 우선 순위가 높습니다. – Tushar

답변

18

그것은 상당하기 :이다

(((((delete p1),p2),p3),p4),p5); 

그것을 delete S p1하고 콤마 연산자는 (어느 것도 없음) 결과 및 p2인가된다. p2 ~ p5이라는 표현식은 단순히 평가되고 결과는 무시됩니다.

0

첫 번째 파일을 삭제합니다.

쉼표 연산자는 쉼표 앞의 내용을 평가 한 다음 쉼표로 버립니다.

3

','분명히 쉼표 연산자이기 때문에 첫 번째 목적은 표현의 나머지 평가되는 동안 삭제됩니다을 지적하고 결과는 폐기됩니다

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; 
//... 

출력 :

~의 Aa1

....

~ AA2

관련 문제