Có sự khác biệt giữa 2 lần khởi tạo của một đối tượng hay không.C++ khởi tạo đối tượng và ngữ nghĩa hàm tạo
Object obj(constructor_arguments);
hoặc
Object obj = Object(constructor_arguments);
Lưu ý rằng việc khởi tạo thứ hai không có ý định trở thành một con trỏ với các nhà điều hành new
. Nó được dự định là một biến không phải đống.
Trong GCC cả biên dịch và làm việc tốt và tôi tự hỏi nếu có thực sự bất kỳ sự khác biệt hoặc nếu cả hai báo cáo là ngữ nghĩa giống nhau.
Cách tốt nhất để xem nếu có sự khác biệt thực sự là kiểm tra mã lắp ráp đã tạo. Việc khởi tạo đầu tiên là tốt hơn, nhưng phiên bản thứ hai có khả năng được tối ưu hóa cho cùng một điều nếu bạn để trình biên dịch thực hiện phép thuật của nó. –
Bản sao có thể có của http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-direct-initializati – syam
@MarcClaesen có nghĩa là xem mã được tạo là không không phải là cách tốt nhất. Trong thực tế, đó là cách tồi tệ nhất (trong trường hợp này), vì nó có thể dẫn đến kết luận sai. –