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

tham chiếu const sai C++ 11

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:15:08 25 4
mua khóa gpt4 Nike

Tôi đang xem Bjarne Stroustrup trên YouTube và tôi đang cố gắng tìm hiểu tại sao điều này bị coi là xấu vì anh ấy nói đó là mã xấu kiểu C++98

void setInt(const unsigned int &i)
void takeaString(const std::string &str)

Ý tôi là bạn đang chuyển một tham chiếu đến một hằng số để bạn có thể lưu cho mình thao tác sao chép và nó thậm chí không được sử dụng như truyền một con trỏ để nó không bị hủy đăng ký, vậy tại sao nó lại tệ?

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

Trong các phiên bản tiền C++ 11, nguyên tắc chung làNếu bạn không sửa đổi các tham số, hãy chuyển các loại dựng sẵn theo giá trị và chuyển các đối tượng của lớp hoặc cấu trúc bằng const&, bởi vì các đối tượng của một lớp hoặc cấu trúc thường lớn đến mức việc truyền hằng số& Vượt qua làm giảm hiệu suất.

Đây là một quy tắc khá tùy ý và tất nhiên bạn sẽ thấy các trường hợp ngoại lệ (chẳng hạn như các trình vòng lặp trong thư viện chuẩn), nhưng nó hoạt động tốt trong thực tế và là một thành ngữ đã được thiết lập. Khi bạn thấy trong mã của một số lập trình viên khác f(int const &i) hoặc f(std::string s) Đôi khi, bạn sẽ muốn biết tại sao và nếu không có lý do rõ ràng, mọi người sẽ bối rối.

Trong C++ 11, tình huống có thể khác. Nhiều người cho rằng do các tính năng ngôn ngữ mới (di chuyển ngữ nghĩa và tham chiếu giá trị), việc chuyển các đối tượng lớn theo giá trị không còn là vấn đề về hiệu suất và thậm chí có thể nhanh hơn. Đọc bài viết này:"Muốn tốc độ? Vượt qua giá trị."Tuy nhiên, khi xem lại các cuộc thảo luận về Stack Overflow trước đây, bạn cũng sẽ thấy các lập trình viên giàu kinh nghiệm phản đối quan điểm này.

Cá nhân tôi vẫn chưa quyết định được. Tôi nghĩ C++11 còn quá mới để tôi thực sự đánh giá xem nó tốt hay xấu.

Tuy nhiên, nếu bạn phải sử dụng trình biên dịch tiền C++ 11 vì bất kỳ lý do gì thì C++ 11 thường không liên quan, vì vậy điều quan trọng là phải hiểu các quy tắc tiền C++ 11.

Về c++ - tham chiếu const bị sai trong C++ 11, 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/22286642/

25 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