01/10/2018, 10:58

Member function in C++

Cho em hỏi tại sao toán tử gán phải là member function. Nếu mình dùng hàm friend hoặc non-member function cũng logic mà.

Hung viết 13:13 ngày 01/10/2018

Vì nó làm thay đổi giá trị của toán hạng trái.

Nếu toán tử 2 ngôi (binary operator) không làm thay đổi giá trị của 2 toán hạng thì dùng friend function.
Nếu toán tử 2 ngôi làm thay đổi toán hạng trái thì dùng member function

Toán tử 1 ngôi (unary operator) luôn là member fucntion
Các toán tử sau đây luôn dùng member function

=, [], *, ->, ->*

Bạn khai báo operator sai rồi kìa

Fraction& operator= (const Fraction &fraction);

friend Fraction operator+ (const Fraction &lhs, const Fraction &rhs);
friend Fraction operator- (const Fraction &lhs, const Fraction &rhs);

friend Fraction operator* (const Fraction &fraction, int number);
friend Fraction operator* (int number, const Fraction &fraction);
viết 13:01 ngày 01/10/2018

nếu xài friend hay non-member thì xài object làm gì nữa, cứ C struct mà táng cho lành

thay vì viết student.setName(...) cứ viết là setName(&student, ...) rồi lấy trình dịch C mà biên dịch, bỏ C++ đi vậy, cũng logic mà

Lê Thị Liên viết 13:09 ngày 01/10/2018

cám ơn các bạn. mình hiểu rồi ạ :))

Hải Đào viết 12:59 ngày 01/10/2018

Vậy tại sao toán tử >> (input) dạng friend mà vẫn làm thay đổi đc toán hạng đấy thôi?

rogp10 viết 13:13 ngày 01/10/2018

Phương thức cài sẵn không có friend đâu mà do các thành phần của kiểu đều phải bắt nguồn từ kiểu cơ bản nên cứ việc sử dụng

Hung viết 13:02 ngày 01/10/2018

Mình xem lại rồi.
Operator >> với toán hạng trái là istream thì dùng friend function.

Quy tắc mình chép lại là bộ convention nên tuân thủ khi code C++. Chọn member hay non- member đều được
Thanks bạn đã góp ý

Hải Đào viết 13:04 ngày 01/10/2018

mình ko hiểu ý bạn lắm?

Bài liên quan
0