У меня есть функция и класс, как показано нижеПрямого вызова конструктора в C++
class Vertex {
public:
int mId;
public:
Vertex(int info=-1) : mId(info) {
}
};
class Edge {
public:
Vertex mStart, mEnd;
int mWeight;
public:
Edge(Vertex start=-1, Vertex end=-1, int wt=-1) :
mStart(start), mEnd(end), mWeight(wt) {
}
};
class Graph {
void addEdge(const Edge& e) {
//Adds this edge to a vector
}
};
shared_ptr<Graph> mygraph(new Graph(13 //no of vertices
, 17 //no of edges
, false));
mygraph->addEdge(Edge(1, 2, 1));
mygraph->addEdge(Edge(3, 1, 1));
mygraph->addEdge(Edge(1, 6, 2));
mygraph->addEdge(Edge(1, 7, 4));
...
Здесь я передаю прямые значения Кромочных в конструкторе и не получаю никакой аварии. Но я предполагаю, что здесь будет утечка памяти. Каков правильный способ передачи объекта по ссылке после создания?
PS: Предположим, что Vertex является неявным конструктором, принимающим int как id.
Вы не использовали новые для краев -> отсутствие утечки памяти. – Borgleader
Код выглядит отлично. Не будет утечки памяти, поскольку ничто не выделяется из бесплатного хранилища, кроме «Графа» в «shared_ptr» (бонусные баллы за это). – molbdnilo
@molbdnilo Спасибо за комментарий. Я хотел бы подтвердить, хорошо ли этот способ построения и переход к функции без использования объектов? –