Đôi khi tôi muốn ủy thác việc xây dựng các đối tượng mà một lớp sở hữu cho một chức năng riêng biệt. Cái gì đó như
Vertex* new_vertex(const Options& options) {
// do stuff...
return new Vertex(...);
}
trong đó hàm chỉ dành cho mục đích sử dụng trong một lớp sở hữu Vertex
. Rõ ràng chức năng này có thể gây ra một số nhầm lẫn rò rỉ bộ nhớ, vì vậy tôi muốn làm cho nó rõ ràng nhất có thể. Có một quy ước đặt tên cho các chức năng như vậy?
unique_ptr
bằng cách gọi release()
hàm của nó và sử dụng các con trỏ thô như các cách cũ.
// FIXME: Allocation of raw pointer
?
new_vertex
để tôi biết đối tượng mới được đúc. Bạn có thể gọi nó Create_new_vertex
để được rõ ràng hơn. Đối với ý tưởng rằng bạn không nên quản lý bộ nhớ heap mà không có con trỏ thông minh, không bao giờ nhìn thấy sự thật trong đó - thực tế nếu bạn không thể quản lý bộ nhớ heap mà không có chúng, bạn cũng không có doanh nghiệp quản lý bộ nhớ heap với chúng!
// TODO: Fix allocation of raw pointer.