30/09/2018, 17:04
Ai giải thích giùm em (const nameClass& )
Mấy anh( chị) cho em hỏi là (const nameClass& ) nghĩa là gì vậy. Tại em thấy const là giữ nguyên giá trị rồi mà có & truyền tham chiếu là thay đổi giá trị, em nghĩ 2 cái mâu thuẫn quá, mà chắc chắn là không mâu thuẫn rồi
Ví dụ đoạn code đơn giản sau:
class CPhanSo
{
private:
int m_iTu;
int m_iMau;
void UocLuoc();
public:
CPhanSo(int iTu = 0, int iMau = 1){Set(iTu, iMau);};
friend istream& operator>>(istream& in, CPhanSo &p);
friend ostream& operator<<(ostream& out, CPhanSo p);
void Set(int iTu, int iMau);
int GetTu();
int GetMau();
friend CPhanSo operator+(const CPhanSo &a, const CPhanSo &b);
}
Bài liên quan
vì người ta muốn khi truyền theo
const
là người dùng chỉ có thể lấy giá trị của Cphanso đó, nhưng ko cho phép thay đổi giá trị của nóVD:
CPhanSo A (1, 2)
khi vào hàm
operator +
bạn thay
đổi A(1,2) thành A(3, 4)
====> ko cho thay đổilà truyền theo kiểu tham chiếu cho nó, nó cho phép bạn cộng 1 lúc nhiều phanso. VD:
A + B + C
Việc thực hiện gộp các phép toán được là ở chổ return value chứ không phải việc truyền tham chiếu.
Truyền tham chiếu không hẳn là để thay đổi giá trị của nó sau khi ra khỏi hàm.
Truyền tham chiếu để nhiều lúc cần sử dụng con trỏ trong hàm, trỏ trực tiếp đến vùng nhớ của biến để quản lý. Truyền tham trị thì nó tạo bản sao, không phải địa chỉ gốc nên không quản lý trực tiếp được.
Ví dụ: