| |
Juni 2003 C++-Diagramm: Diagramm für strukturierte Arten 1-27 1 den constgegenstand kopieren; stattdessen das Fehlen dem const T * Erbauer und Zuweisungsoperatoren ergeben eine Kompilierzeitstörung wenn solch eine Initialisierung oder Anweisung wird versucht. Dieses erlaubt dem Anwendungsentwickler, zu entscheiden, wenn eine Kopie ist wirklich gewünscht oder nicht. Ausdrückliche Kopie von const T * Gegenstände in T_var Arten können sein erzielt über den Kopienerbauer für T // C++ const T * t =...; T_var Fernsehapparat = neues T(*t); 1,9,2 Arten T_out Wenn ein T_var wird als Heraus überschritten Parameter, auf irgendein vorhergehender Wert, den er muß sich bezog wird implizit gelöscht. C++, das Implementierungen genügende Haken zum Treffen geben abbildet diese Anforderung, jedes T_var schreiben Sie hat ein entsprechendes T_out schreiben Sie, das verwendet wird nur als das Heraus Parameterart. Die allgemeine Form für T_out Arten für Variable Längenarten wird unten gezeigt. // C++ Kategorie T_out { Öffentlichkeit: T_out(T*& P): ptr_(p) { PTR _ = 0; } T_out(T_var& P): ptr_(p.ptr _) { Löschung-PTR _; PTR _ = 0; } T_out(const T_out& P): ptr_(p.ptr _) { } Operator=(const T_out& T_out& P) { PTR _ = p.ptr _; Rückkehr * diese; } Operator=(T T_out& * P) { PTR _ = p; Rückkehr * diese; } Operator T*&() { RückholcPtr _; } Ptr() T*& { RückholcPtr _; } T * Operator->() { RückholcPtr _; } privat: PTR T*& _; // Anweisung von T_var nicht erlaubt leeres operator=(const T_var&): }; Der erste Erbauer bindet das Bezugsdatenmitglied mit dem T*& Argument und Sätze der Zeiger zum Wert des ungültigen Zeigers. Der zweite Erbauer bindet die Bezugsdaten Mitglied mit dem Zeiger hielt durch das T_var Argument und dann Anruf- Löschung auf |  |
|
| |
|
|