Нет, то, что вы делаете, хорошо. Когда вы помещаете объект на vector
, создается копия. Поэтому, когда ваша функция возвращается, ваш a
уничтожается, но vector
, к которому вы добавили его, все еще имеет свою отдельную копию.
Одна из причин, по которой кто-то мог бы динамически выделить экземпляр класса и поместить его в вектор, заключается в том, что копирование объектов этого конкретного класса обходится дорого (а vector
делает много копий внутри), и они хотят избежать таким образом, они хранят указатели вместо объектов, так что создаются только копии указателей, а не объектов (что было бы не так дорого). Это все зависит от класса, хотя; как правило, вы можете использовать векторы объектов без проблем с производительностью.
Примечание: ярлык 1 для Activity a = Activity("a");
равен Activity a("a")
или лучше, выполните то, что предложил Бенджамин, и выполните activites.push_back(Activity("a"))
, если вы не выполняете какие-либо операции с Activity
перед вами нажмите его.
1 Это на самом деле не ярлык, потому что он делает что-то другое, но для ваших намерений и целей это так.