01. juli 2004 - 16:44
Der er
9 kommentarer og 2 løsninger
MFC memory
Jeg har en klassevariable af typen CStringArray myArray. Jeg tilføjer elementer i en funktion. F.eks: void addElement() { CString test = "test"; myArray.Add(test); } Bliver test kopieret over i arrayet, eller er den en reference?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Godt så ingen problemer her. Hvad med CStrign t = "test"; t = "test2"; Hvem ryder op efter den første værdi? CString selv?
Og når den bliver returneret fra en funktioner, bliver den også kopieret her? CStrint test() { Cstring test = "test"; return test; }
re 18:05:06) Det er CString's = operator som skal håndtere det. re 01/07-2004 18:31:03) funktions resultatet returneres ved hjælp af CString copy constructor og CString's destructor vil blive kaldt på test
Takker, læg du også et svar.
26. august 2004 - 14:48
#7
Hej Arne. Er det også sådan med andre MFC objekter. F.eks CTime?
26. august 2004 - 14:53
#8
Det vil jeg tro - men hvad er konteksten ?
26. august 2004 - 16:20
#9
CTime test() { CTime test; return test; }
26. august 2004 - 16:23
#10
Det er helt det samme. der vil blive kaldt: constructor for test copy constructor med test som højre side argument destructor for test
26. august 2004 - 16:35
#11
Prøv og kør dette lille eksempel: #include <iostream> using namespace std; class Test { public: Test() { cout << (int)this << " constructed" << endl; } ~Test() { cout << (int)this << " destructed" << endl; } Test(const Test& rhs) { cout << "copy from " << (int)&rhs << " to " << (int)this << endl; } void operator=(const Test& rhs) { cout << "assignment from " << (int)&rhs << " to " << (int)this << endl; } }; Test f() { Test res; return res; } int main() { Test a; a = f(); return 0; }
Kurser inden for grundlæggende programmering