Operators
Ta có thể thực hiện overloading toán tử thông qua các trait trong std::ops
:
Speaker Notes
This slide should take about 10 minutes.
Một số điểm cần thảo luận:
- Ta có thể implement
Add
cho&Point
. Việc này có ích trong những tình huống nào?- Trả lời:
Add:add
tiêu thụself
. Nếu kiểuT
mà ta muốn overloading toán tử không implementCopy
, ta cũng nên cân nhắc overload toán tử cho&T
. Như vậy ta có thể tránh việc clone không cần thiết tại thời điểm gọi hàm.
- Trả lời:
- Tại sao
Output
là một associated type? Có thể thay thếOutput
bằng một tham số generic cho hàm không?- Trả lời: Tham số generic của hàm được quyết định bởi người gọi hàm, nhưng associated types (như
Output
) được quyết định bởi người implement trait.
- Trả lời: Tham số generic của hàm được quyết định bởi người gọi hàm, nhưng associated types (như
- Ta có thể implement
Add
cho hai kiểu dữ liệu khác nhau, ví dụimpl Add<(i32, i32)> for Point
sẽ cộng một tuple vào mộtPoint
.