I am just starting with C++ and got some problems in understanding how the scope for private member variables in a class works. Please see the below code
class Foo{ private: std::vector<int> container; public: // other methods }; int main(int argc, char* argv[]) { Foo* foo = new Foo; // other method calls to which foo is passed delete foo; return 0; }
In the above code, variable ‘container’ is a private member variable. I am invoking ‘Foo’ instance and passing it to several other methods and classes. Following are my doubts
- What will be the scope of variable ‘container’? Will that variable exist until I delete the instance foo?
- Do I need to make the ‘container’ as a pointer to vector?
Thanks for the help
deleteon the pointer pointing to it (fooin your case).vector<int>which you would need to manage the lifetime of (including calling delete on the container pointer). That’s unnecessary here. Assuming you want the container last as long as the Foo object, you are fine with having it directly contained, without doing it with a pointer.Passing the
foopointer will just pass the pointer. The object that it points to will not be copied, only the pointer pointing to it if necassary. If you know Java, then it helps you if i tell you passing the pointer is the same as just passing a reference to an object in Java, say: