Cho em hỏi là ở dòng 29 hàm getName() có kiểu trả về là tham chiếu nhưng lại return m_name mà m_name lại là kiểu string. Ai giải thích rõ giúp em với ạ. Em cảm ơn!
Hàm và giá trị trả về trong C++
tham chiếu chỉ là tên gọi khác của biến được tham chiếu tới thôi, ko phải là kiểu khác kiểu được tham chiếu tới.
nếu viết là
std::string getName() { return m_name; }
...
std::string name = obj.getName();
thì name
ở đây là 1 copy của m_name
nếu viết lại sử dụng tham chiếu thì
std::string& getName() { return m_name; }
...
std::string& name = obj.getName();
name
ở đây là tên gọi khác của m_name
, nếu name
thay đổi thì m_name
cũng thay đổi theo. Ở đây getter ko nên thay đổi thuộc tính của object, nên thêm const
vào nữa:
const std::string& getName() const { return m_name; }
...
const std::string& name = obj.getName();
name
chính là m_name
, và name
là const
ko thay đổi giá trị được.
5 Likes
Em hiểu rồi. Em cảm ơn ạ.