cuốn sách gpt4 ai đã làm

Tôi nên xây dựng các thành viên C++ phụ thuộc lẫn nhau như thế nào?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 01:47:42 28 4
mua khóa gpt4 Nike

Tôi có một lớp sử dụng thư viện để giao tiếp:

lớp chủ đề {
Chủ đề(Loại T, Tên chuỗi);
};

lớp Trình đọc {
Reader (Chủ đề, Tên chuỗi);
};

lớp Nhà văn {
Người viết (Chủ đề, Tên chuỗi);
};

Tôi muốn tạo một lớp diễn giả như thế này:

Talker (Loại T, Tên chuỗi);

Và tạo các thành viên Writer và Reader thông qua hàm tạo.

Tôi bị giằng xé giữa việc làm điều này với con trỏ:

lớp người nói chuyện {
Chủ đề* m_Topic;
Trình đọc* m_Reader;
Nhà văn* m_Writer;

Người nói chuyện (Loại T, Tên chuỗi) {
m_Topic = Chủ đề mới (T, generateTopicName(name));
m_Reader = Trình đọc mới (m_Topic, generateReaderName(name));
m_Writer = Nhà văn mới (m_Topic, generateWriterName(name));
}
};

Trận chiến trực tiếp:

lớp người nói chuyện {
Chủ đề m_Topic;
Trình đọc m_Reader;
Nhà văn m_Writer;


Người nói chuyện (Loại T, Tên chuỗi):
m_Topic(T, tên),
m_Reader(m_Topic, generateReaderName(name)),
m_Writer(m_Topic, generateWriterName(name))
{}
};

Tôi đang nói chuyện với một đồng nghiệp và có vẻ như điều sau không tốt vì nó phụ thuộc vào thứ tự khởi tạo thành viên. Tuy nhiên, nó cũng có một hàm tạo bản sao tự động đang hoạt động.

Cách nào tốt hơn để xử lý loại vấn đề này, đặc biệt là khi danh sách các đối tượng thành viên ngày càng dài?

câu trả lời hay nhất

Những quyết định như thế này không nên dựa trên lập luận do đồng nghiệp của bạn đề xuất, vì đó là lập luận không hợp lệ. Bạn thậm chí có thể kiểm soát thứ tự khởi tạo của các thành viên đối tượng - xem đoạn cuối của tôi. Quyết định này phải dựa trên:

1) chức năng - Bạn có cần loại đa hình không? Đề tài,đầu đọcNhà vănLiệu nó có được kế thừa không? Nếu vậy, bạn nên sử dụng con trỏ để ngăn việc cắt đối tượng.

2) logic Người nói chuyện Nó có phải là chủ sở hữu thực sự của thành viên (đối tượng) hay nó chỉ trỏ đến một đối tượng nào đó được chia sẻ giữa nhiều lớp?

câu trả lời cũ

Một cách khác là sử dụng con trỏ thông minh làm thành viên. Bằng cách này bạn vẫn có được lợi ích của việc quản lý bộ nhớ tự động.

Nhưng, nếu bạn biết C++ của mình, đối số của đồng nghiệp của bạn không hợp lệ và tùy chọn thứ hai cũng không tệ. các thành viên theo dõi họ trong lớp học Được khởi tạo theo thứ tự được khai báo trong . Vì thế m_Chủ đề sẽ được khởi tạo đầu tiên,m_Reader thứ hai và cuối cùng m_Writer. Nếu thứ tự khởi tạo có vấn đề (mùi mã), chỉ cần sắp xếp lại các thành viên trong định nghĩa lớp.

Tôi nên xây dựng các thành viên C++ phụ thuộc lẫn nhau như thế nào? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/9877926/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress