Bij gebrek aan "Programming kroeg" gooi ik dit kleine vraagje maar in een apart topic
Vraag in het kort:
Is het zo dat als het object dat een functie/constructor nodig heeft, niet overeen komt met het gegeven object, C++ zelf het benodigde object genereert door de constructor ervan te callen met het gegeven maar mismatching object?
Als mijn vraag niet duidelijk is: hier een aanvullend verhaaltje
Ik ben al een tijdje als ontspanning bezig aan een genetisch algoritme, een vingeroefening om wat beter object-georiënteerd leren te programmeren (C++ is relatief nieuw voor mij).
Mijn programma bestaat uit een "creature", dat volgens zijn "dna" code rondkruipt in een "world". Dit heb ik dan heel gestructureerd opgebouwd, met volgende hiërarchie: world->creature->dna->gen. Elke klasse heeft zijn specifieke functies, en roept zo goed het kan enkel functies aan van de parent en child class.
Anyway, de constructor van mijn Creature klasse ziet er als volgt uit (pseudo-code):
Ik heb dus maar 2 constructors, de ene dient ervoor zodat ik later manueel de DNA en aantal stapjes nog instel, de andere om dat in 1 beweging te doen.
De constructor van mijn DNA klasse is eenvoudiger, die heeft enkel een string als input nodig.
Nu had ik in mijn main.cpp een fout gemaakt, en een creature geinitialiseerd met Creature(string, int). Fout dus, maar de compiler klaagde helemaal niet? Beter zelf, mijn programma werkte helemaal naar behoren!?
De string die ik "Creature" gaf, kwam wel overeen met de string die ik zou moeten gebruikt hebben om "DNA" te initialiseren... Is het dus zo dat als het object dat een functie/constructor nodig heeft, niet overeen komt met het gegeven object, C++ zelf het benodigde object genereert door de constructor ervan te callen met het gegeven maar mismatching object?
Alvast bedankt!
maleadt
Vraag in het kort:
Is het zo dat als het object dat een functie/constructor nodig heeft, niet overeen komt met het gegeven object, C++ zelf het benodigde object genereert door de constructor ervan te callen met het gegeven maar mismatching object?
Als mijn vraag niet duidelijk is: hier een aanvullend verhaaltje
Ik ben al een tijdje als ontspanning bezig aan een genetisch algoritme, een vingeroefening om wat beter object-georiënteerd leren te programmeren (C++ is relatief nieuw voor mij).
Mijn programma bestaat uit een "creature", dat volgens zijn "dna" code rondkruipt in een "world". Dit heb ik dan heel gestructureerd opgebouwd, met volgende hiërarchie: world->creature->dna->gen. Elke klasse heeft zijn specifieke functies, en roept zo goed het kan enkel functies aan van de parent en child class.
Anyway, de constructor van mijn Creature klasse ziet er als volgt uit (pseudo-code):
C++:
1
2
3
4
5
6
7
| Creature::Creature() { } Creature::Creature(DNA inputDNA, int aantal_stapjes) { doe iets met inputDNA en aantal_stapjes; } |
Ik heb dus maar 2 constructors, de ene dient ervoor zodat ik later manueel de DNA en aantal stapjes nog instel, de andere om dat in 1 beweging te doen.
De constructor van mijn DNA klasse is eenvoudiger, die heeft enkel een string als input nodig.
Nu had ik in mijn main.cpp een fout gemaakt, en een creature geinitialiseerd met Creature(string, int). Fout dus, maar de compiler klaagde helemaal niet? Beter zelf, mijn programma werkte helemaal naar behoren!?
De string die ik "Creature" gaf, kwam wel overeen met de string die ik zou moeten gebruikt hebben om "DNA" te initialiseren... Is het dus zo dat als het object dat een functie/constructor nodig heeft, niet overeen komt met het gegeven object, C++ zelf het benodigde object genereert door de constructor ervan te callen met het gegeven maar mismatching object?
Alvast bedankt!
maleadt