30/09/2018, 18:02

Vấn đề về tham chiếu của operator trong C++?

Ví dụ mình có vài phương thức như sau:

const Phanso operator+=(const phanso a);

const Phanso& operator+=(const phanso a);

const Phanso& operator+=(const phanso& a);

Nếu mình tiếp tục định nghĩa cho chúng và sử dụng thì sẽ khác nhau như thế nào ạ? Mình đã thử nhiều lần rồi mà vẫn chưa tìm ra điểm khác biệt giữa chúng. Mong mọi người xem và giải đáp chi tiết giúp mình và cho các bạn cũng chưa biết. Cảm ơn mọi người

Minh Hoàng viết 20:17 ngày 30/09/2018

const phanso a: truyền vào một tham số là hằng số, ko thể thay đổi suốt hàm.
const phanso& a: ko thể thay đổi được data của đối tượng được a tham chiếu tới.
ngoài ra
phanso& const a: ko thể thay đổi đối tượng tham chiếu.

Lê Hồng Hiếu viết 20:13 ngày 30/09/2018

còn kiểu trả về thì sao vậy bạn?

Minh Hoàng viết 20:07 ngày 30/09/2018

const Phanso: trả về một rvalue.
const Phanso&: trả về một tham chiếu lvalue nhưng không thể thay đổi được data qua tham chiếu này.
Phanso& const: trả về một tham chiếu mà biến nhận sẽ không thể thay đổi được đối tượng tham chiếu.
Ngoài ra còn const đặt ở cuối prototype nhằm ngăn chặn method thay đổi thuộc tính của class.

Phong Tran's Weblog – 7 Nov 07

Từ khóa “const” trong C++ (tiếp theo)

Tiếp theo bài viết kỳ trước, bài này xin trình bày tác dụng của const khi hoạt động với hàm trong C++. Giả sử ta có cấu trúc sau: class A { private: int m_a; public: … };…

Bài liên quan
0