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
Thanks for the help
delete on the pointer pointing to it (foo in 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 foo pointer 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:
Foo f = new Foo();
// just passes the reference (pointer in C++) to doIt.
// the actual object is not copied
doIt(f);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With