2016-04-08 20 views
0

Birisi bana böyle bir durumda kopya kurucusu ve yıkıcı program tarafından kullanıldığını söyleyebilir mi?Kurucu ve kopya yapıcı sırasının düzeni

#include <iostream> 

#include <iomanip> 

using namespace std; 

class Object 
{ 
public: 
     Object(){} 
     Object(const Object &kk) {cout<<"kk"<<endl;} 
     bool operator==(Object c) 
     { 
       cout<<"o=="<<endl; return false; 
     } 
     ~Object() 
     { 
       cout<<"des"<<endl; 
     } 

}; 

int main() 
{ 
     Object o1,o2; 
     bool result; 
     result = (o1==o2); 
} 

sonucudur: cevap için şimdiden

kk 
o== 
des 

teşekkürler.

+0

Siz _should_ üç 'des's var. Bu tüm çıktı mı? –

+0

http://coliru.stacked-crooked.com/a/cda48c84215619dc –

+0

Evet, 3 tane des var. Sadece şunu yazdı: Orbit'teki Hafiflik Yarışları zaten benim sorumu yanıtladı ve kendime bunun neden böyle olduğunu hatırlattım. – FilOle

cevap

2

Sizin operator== kendi argümanını değere göre aldığından.

Değer almak, bir kopya anlamına gelir.

Bunun yerine kopya oluşturucunuz için yaptığınız gibi bir const-reference yapın.

+0

Tricky. Teşekkürler. – FilOle

İlgili konular