Let's assume I have a singleton class:
class Singleton {
public:
static Singleton* getInstance();
void doit();
std::vector<Object*>& getVector();
private:
std::vector<Object*> _vector;
static Singleton *instance;
Singleton();
~Singleton();
Singleton(const Singleton&);
};
class Delegator {
public:
void main();
}
- In the
doitmethod I populate the_vectorwith pointers to objects. - In the
main()from theDelegatorclass, I callgetVector()and display the results.
Given this abstraction, I have the following questions:
- Can I delete all the pointers to instances of Object in the
main()fromDelegator(after displaying the results). If yes, is this recommended? - Does the singleton ever get destroyed? In other words, will the reference returned in
getVector()always be valid? - I return a reference to a vector instead of a copy of the vector in
getVector(). Given that the vector only contains pointers to objects and will not modify the vector content outside theSingletonclass, is there any efficiency gained from returning a reference?
Thank you in advance