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

c++ - inline void addTask(Task task) so với inline void addTask(const Task &task)

In lại Tác giả: Walker 123 Thời gian cập nhật: 28-11-2023 00:20:38 27 4
mua khóa gpt4 Nike

tôi đã từng vượt qua hằng số & hoặc ít nhất là vượt qua & để vượt qua mọi cấu trúc phức tạp. Nhưng có những cái mới std::di chuyển ngữ nghĩa và tất cả những tối ưu hóa mà trình biên dịch cung cấp ngày nay,Nó vẫn là một lựa chọn?

Hãy xem xét ví dụ này:

Nhiệm vụ cấu trúc {
thời gian không dấuMS;
void(*function)(unsigned, unsigned) = 0;
Nhiệm vụ(unsigned timeMS, void(*function)(unsigned, unsigned))
: timeMS(timeMS), hàm(hàm){}
};

Dòng thời gian của lớp{
nhiệm vụ std::vector;
...
};

lớpApp{
...
công cộng:
inline void addTask1(const Nhiệm vụ &task){ time.add(Task }
inline void addTask2(Task &task){ time.add(Task })
inline void addTask3(Nhiệm vụ nhiệm vụ){ dòng thời gian.add(Nhiệm vụ }
};

addTask1, addTask2, addTask3 Cách tiếp cận nào trong số này là khả thi?giả thuyết Ứng dụng::addTask() là phương pháp được sử dụng thường xuyên.

tôi nghĩ hằng số & Một bản sao cần được tạo ra, nhưng tôi nhận ra rằng việc này không đơn giản như người ta tưởng. đề cập đến RVO ( http://en.wikipedia.org/wiki/Return_value_optimization ) là đủ - Tôi chắc chắn còn có nhiều điều cần xem xét hơn (mà tôi chưa biết).

Tôi biết nội tuyến Nó thực sự chỉ là một gợi ý cho trình biên dịch chứ không phải một lệnh. nhưng nó đã thay đổi chưa hằng số & vs & vs theo giá trị Chiến đấu?

Tôi đang sử dụng VC++ 2013 và tôi không chú ý nhiều đến gcc.

P.S. xin lưu ý,Ứng dụng::addTask gọi Dòng thời gian::thêm, cái sau gọi vectơ::push_back. Vì thếTham số đã được truyền nhiều lần - Tôi có nên làm không? Ứng dụng::addTaskDòng thời gian::thêm có cùng một "loại" ( hằng số & vs & vs theo giá trị).

27 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