Verallgemeinerung und Niedergeschlagen in C++

class file {
    std::string name;
};

class directory : public file {
    std::vector<file*> entries;
};

directory d;
file f;

f = d; //Only d.name is copied to f; entries are lost

Ist es, wenn wir dies tun:

directory* dp = new directory;
file* fp ;

fp = dynamic_cast<file*>(dp); 

Hält Einträge und Identität als ein directory-Objekt oder nur noch dp->name kopiert f; Einträge sind verloren.


Auch, wie wirkt niedergeschlagen Arbeit?

Was passiert, wenn wir tun:

dp = dynamic_cast<dp*> (fp);
Eine kleine sidenote: Sie sollten nicht zuweisen Zeiger mit new wenn Sie zuweisen möchten, Zeiger später, es ist ein Speicher-Leck.
Keine Zuordnung, weder dynamic_cast<> arbeiten wird, weil Sie verwenden private bei der Vererbung. Außerdem, was ist Ihre Frage?
Sie sind nicht sehr vertraut mit delete sind Sie?

InformationsquelleAutor Mayuresh | 2011-11-22

Schreibe einen Kommentar