Hoi
Ik had een klein test programma gemaakt, om de werking van de copy constructor te zien bij het returnen van een object. Mijn programma:
objret.h:
main.cpp:
C! C! CC! 10
C! CC! CC! 10
De output van lijn 1 van de output snap ik: eerst wordt object1 aangemaakt (constr.), dan wordt object temp aangemaakt (constr.) en dan wordt temp gekopieerd naar object1 (copy constr.).
De output van lijn 2 snap ik daarentegen niet. Waarvoor staat die laatste CC! (copy constructor)? Waarvoor staat die extra CC!? Er wordt toch maar 1 keer gekopieerd?
Het resultaat is in beide gevallen hetzelfde (wat het zou moeten zijn natuurlijk), maar ik snap de manier van werken in situatie 2 dus niet.
Misschien kan iemand mij helpen
Ik had een klein test programma gemaakt, om de werking van de copy constructor te zien bij het returnen van een object. Mijn programma:
objret.h:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| class CObjReturn
{
private:
int m_int;
public:
CObjReturn(int input = 10)
{
cout << "C! ";
m_int = input;
}
CObjReturn(const CObjReturn & objectBron)
{
cout << "CC! ";
m_int = objectBron.returnWaarde();
}
int returnWaarde(void) const { return m_int; }
}; |
main.cpp:
code:
Ik krijg volgende output:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <iostream.h>
#include "objret.h"
CObjReturn returnObject(void);
void main (void)
{
CObjReturn object1;
object1 = returnObject();
cout << object1.returnWaarde();
cout << "\n";
CObjReturn object2 = returnObject();
cout << object2.returnWaarde();
}
CObjReturn returnObject(void)
{
CObjReturn temp; /* lokaal */
return temp;
} |
C! C! CC! 10
C! CC! CC! 10
De output van lijn 1 van de output snap ik: eerst wordt object1 aangemaakt (constr.), dan wordt object temp aangemaakt (constr.) en dan wordt temp gekopieerd naar object1 (copy constr.).
De output van lijn 2 snap ik daarentegen niet. Waarvoor staat die laatste CC! (copy constructor)? Waarvoor staat die extra CC!? Er wordt toch maar 1 keer gekopieerd?
Het resultaat is in beide gevallen hetzelfde (wat het zou moeten zijn natuurlijk), maar ik snap de manier van werken in situatie 2 dus niet.
Misschien kan iemand mij helpen
[ Voor 0% gewijzigd door Verwijderd op 28-09-2002 13:27 . Reden: foute benamingen, corrected ]