У меня есть указатель на граф с именем * graph1, и для него уже выделена память (примечание: не является частью вопроса, но Graph является шаблоном класса).Я также создал еще один экземпляр Graph под названием graph2.Я вызвал перегруженный оператор присваивания для них так:
Graph<std::string,std::string> *graph1 = new Graph<std::string,std::string>;
...
... // Called member functions on graph1
Graph<std::string,std::string> graph2;
graph2 = *graph1;
Оператор присваивания работает правильно, НО по какой-то причине деструктор Graph также вызывается сразу после вызова оператора присваивания.Это нормально, или я неправильно реализую оператор присваивания?
Вот как я реализовал оператор присваивания:
template <typename VertexType, typename EdgeType>
Graph<VertexType, EdgeType> Graph<VertexType, EdgeType>::operator=(const Graph<VertexType, EdgeType> &source)
{
std::cout << "\tAssignment Operator called\n\n";
if(this == &source)
return *this;
this->vecOfVertices = source.vecOfVertices;
this->orderPtr = source.orderPtr;
this->count = source.count;
return *this;
}