Ben Visual Studio aşağıdaki programı denedik 2010.C++ yıkıcı davranış
#include <iostream>
using namespace std;
class A {
public:
int p;
/*A(){
cout << "Constructor A" << endl;
}*/
~A(){
cout << "Destructor in A" << endl;
}
};
class D: public A
{
public:
/*D(){
cout << "Constructor D" << endl;
}*/
~D(){
cout << "Destructor in D" << endl;
}
};
int main()
{
D d = D();
cout << "Exiting main" << endl;
}
aldığım çıkış oldu -
Destructor in D
Destructor in A
Exiting main
Destructor in D
Destructor in A
ben anlamak mümkün değilim neden D sınıfı yıkıcı ve A "ana çıkılıyor" ifadesi çalıştırılmadan önce deniliyor?
başka işlerim çalıştı - Sonra çıktı ben beklendiği gibi, yukarıdaki kodda D sınıfı yapıcısı uncommented -Constructor D
Exiting main
Destructor in D
Destructor in A
Burada ne eksik?
İkinci örneğin neden yıkıcı aramalarını yazdırdığını açıklamıyor. – Xeo
Nasıl olması gerektiğini anlatabilirsiniz (: –
Derleyici yalnızca gözlemlenemeyen en iyileştirmeler yapmasına izin verilir. Kopyalama elemen olsa bile, arama hala yazdırılmalı. – Xeo