Hi,
I'm having a bit of trouble deciding on which way I should pass objects to other objects. There appears to be 3 main ways of doing it: pass by reference, pass by value and pass by pointer. I understand how each of these works but I don't know when to use each of them. For example, take this bit of code:
This is really simple, but am I right in saying it wouldn't be a good design if OtherClass was fairly big (memory wise)?Code:#include "MainClass.h" #include "OtherClass.h" MainClass mClass; void init() { OtherClass oc; // do stuff with oc mClass.setOtherClassUsingPassByValue(oc); } int main() { init(); mClass.doStuffWithOtherClass(); return 0; }
Another way to do it would be to use pointers (same code except init method):
This is also simple, but I've read in numerous places that you should avoid pointers wherever possible and use references, instead of pointers in methods of objects.Code:void init() { OtherClass* oc = new OtherClass(); // do stuff with oc mClass.setOtherClassUsingPassByPointer(oc); // mClass takes ownership of oc }
So this is a reference way:
But Im not sure if this way would work as would oc delete itself when init finished? To fix that problem, I could do:Code:void init() { OtherClass oc; // do stuff with oc mClass.setOtherClassUsingReference(oc); // mClass takes ownership of oc }
But that, while it would probably work, seems messy (I've never seen *new used before). So I was wondering what was the general way of solving this problem.Code:void init() { OtherClass& oc = *new OtherClass(); // do stuff with oc mClass.setOtherClassUsingReference(oc); // mClass takes ownership of oc }
Also, a similar problem, how do you normally store objects inside a class (eg MainClass)? I.e as a pointer, reference or value and when is each appropriate?
Thanks!



LinkBack URL
About LinkBacks


