Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // PROJDE, ale je to pomalé, volá se copy constructor na objecktu
- MyClass GetMyClassValue()
- {
- // tvorba objektu na zásobníku, po opuštění
- // funkce se položka ze zásobníku ruší
- MyClass result;
- // vrací se kopie lokálního objektu result
- return result;
- }
- // ŠPATNĚ, protože lokální položka MyClass je zdestruována, vrací se reference na neexistující objekt
- MyClass& GetMyClassReferenceWrong()
- {
- // tvorba objektu na zásobníku, po opuštění
- // funkce se položka ze zásobníku ruší
- MyClass result;
- return result;
- }
- // DOBŘE, nutno pak zajistit destruování paměti ručně
- // V tomto případě to ale asi trochu svádí zapomenout na destruování objektu
- // (nutno získat zpět pointer na získaný objekt a zavolat delete)
- MyClass& GetMyClassReference()
- {
- // tvorba na haldě, musíme se sami postarat o zrušení
- MyClass *result = new MyClass;
- // lokální proměnná result sice zaniká, ale z funkce se vrátí kopie
- // reference na objekt
- return *result;
- }
- // DOBŘE, nutno pak zajistit destruování paměti ručně
- // získám pointer, na něm pak delete
- MyClass* GetMyClassPointer()
- {
- // tvorba na haldě, musíme se sami postarat o zrušení
- MyClass *result = new MyClass;
- return result;
- }
- // DOBŘE, nutno pak zajistit destruování paměti ručně
- // nutno zde mít ještě referenci (&) - abychom nám byl předán pointer, který
- // má být naplněn a ne jeho kopie vykopírovaná do parametru
- void GetMyClassFillPointer(MyClass*& pointer)
- {
- // tvorba na haldě, musíme se sami postarat o zrušení
- pointer = new MyClass();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement