Hôm trước mới học copy constructor !
Có chỗ này thắc mắc:
cú pháp của copy construtor là
Mình thắc mắc là tại sao, lại là const ?? theo mình đọc thì nếu ghi là const complex a thì a sẽ là đối tượng hằng ( là đối tượng không thể thay đổi dữ liệu của nó ? )Code:complex (complex const &a){ ................ }
Sao khi mình sữ dụng thì lại truyền là complex b(a); trong khi complex a đâu chắc là đối tượng hằng ?? Mình thắc mắc chút về cấu trúc viết hàm thoai ! Mong ai đó hiểu thì giải thik cho mình với ??
Có 2 cách ghi :
class A;
- A const& rhs;
hoặc
- const A& rhs;
Cái này thì chỉ là style của mỗi người, chỉ cần hiểu nó tham chiếu đến đối tượng A, mà A là const tức là : -> không được đụng vào tui nha, chỉ ngó thôi.
Vậy câu hỏi : tại sao phải pass by const reference
-> Pass bằng trị cũng được nhưng không hiệu quả -> vì sao ? vì pass = trị thì nó sẽ tạo 1 copy của đối tượng mỗi lần gọi hàm.
a không cần là đối tượng hằng, khai báo cách đó nói lên rằng :trong khi complex a đâu chắc là đối tượng hằng ?? Mình thắc mắc chút về cấu trúc viết hàm thoai ! Mong ai đó hiểu thì giải thik cho mình với ??
- chỉ được sử dụng dữ liệu của a để tính toán gì đó..
- nhưng không cho chỉnh sữa dữ liệu.
- reference để tránh tạo bản sao.