18. april 2008 - 14:52Der er
7 kommentarer og 1 løsning
Spørgsmål om Arv
Hej, jeg har et spørgsmål til følgende eksempel. Jeg har to klasser, en klasse motor og en klasse bil.
class motor{ public: motor(motor&); private: int a; int b; int c; };
class bil : public motor{ public: private: int d; };
Som det kan ses foroven arver klassen bil en motor. Så vidt jeg husker er reglerne, at det eneste man ikke kan arve fra en anden klasse er: constructor, destructor, assignment overload og copy constructor.
Når jeg så i mit program skriver følgende, så vil jeg mene det kun er den del, som er arvet, som burde blive håndteret af copyconstructoren. Dvs variablerne a b og c. Men nej, variablen d som kun eksisterer i klassen bil, som ikke har en copyconstructor bliver også håndteret af copyconstructoren! Er der nogen som kan forklare hvordan det kan lade sig gøre eller bare sende et link?
findes der en default copy constructor? øv... det havde jeg ingen anelse om. Jeg havde læst, at hvis man ikke implementerede copy constructoren, så vil compileren selv generere en ved "bitwise copying", men det vil sige at når compileren selv genererer en, så tager den simpelthen hånd om alle de medlemsdata, som klassen indeholder? Genialt.
sss.print(); sss.setX( "123 45" ); sss.print(); Obj.print(); // <--------------- ny linie
cout << endl;
return 0; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.