Hàm và giá trị trả về trong C++

image
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!

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à nameconst ko thay đổi giá trị được.

5 Likes

Em hiểu rồi. Em cảm ơn ạ. :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?