Hiện nay, chức năng phân bổ trong thư viện chuẩn mất std::nothrow_t
bằng cách tham chiếu const như:Tại sao chức năng phân bổ nhận std :: nothrow_t theo tham chiếu chứ không phải theo giá trị?
void* operator new (std::size_t count, const std::nothrow_t& tag);
void* operator new[](std::size_t count, const std::nothrow_t& tag);
Kể từ std::nothrow_t
chỉ đơn giản là một loại thẻ cho các mục đích cử, phải không đơn giản và (có thể) hiệu quả hơn để lấy nó bằng cách giá trị? Ví dụ:
void* operator new (std::size_t count, std::nothrow_t tag);
void* operator new[](std::size_t count, std::nothrow_t tag);
Lý do cơ bản đằng sau thiết kế tham chiếu const là gì?
Có lẽ không có nhà xây dựng bản sao nào được gọi. – CoffeeandCode
@CoffeeandCode Tôi nghĩ việc sao chép các loại thẻ là tầm thường và nhanh chóng, và tùy thuộc vào tối ưu hóa trình biên dịch. – Lingxi
Nhưng việc triển khai của họ thường gây khó khăn cho ai đó để khởi tạo loại. – CoffeeandCode