Tôi đã đọc rằng tiêu chuẩn C++ cho phép tối ưu hóa đến một điểm mà nó thực sự có thể cản trở với chức năng dự kiến. Khi tôi nói điều này, tôi đang nói về tối ưu hóa giá trị trả về, nơi bạn có thể thực sự có một số logic trong hàm tạo bản sao, nhưng trình biên dịch tối ưu hóa cuộc gọi.Câu hỏi về tối ưu hóa trong C++
Tôi thấy điều này là hơi xấu, như trong một người không biết điều này có thể dành một chút thời gian sửa chữa một lỗi do điều này.
Điều tôi muốn biết là liệu có bất kỳ tình huống nào khác khi tối ưu hóa quá mức từ trình biên dịch có thể thay đổi chức năng hay không.
Ví dụ, một cái gì đó như:
int x = 1;
x = 1;
x = 1;
x = 1;
có thể được tối ưu hóa để một đơn x = 1;
Giả sử tôi đã:
class A;
A a = b;
a = b;
a = b;
thể này có thể cũng được tối ưu hóa? Có lẽ không phải là ví dụ tốt nhất, nhưng tôi hy vọng bạn hiểu ý tôi chứ ...
Tôi không đồng ý với kết thúc bỏ phiếu. Đây là một câu hỏi thực sự, có thể trả lời được. –
Khi eliding sao chép ctors dẫn đến một lỗi trong mã của bạn, sau đó bạn thiết kế ctor bản sao của bạn sai trong đầu. Mã của bạn không nên phụ thuộc vào số lượng đối tượng xung quanh hoặc tần suất mọi thứ được sao chép/gán. – PlasmaHH
Logic trong ctor sao chép phải là logic để sao chép đối tượng. Nếu nó không được sao chép, thì tại sao sao chép logic ctor cần phải chạy? –