01/10/2018, 17:13

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!

viết 19:29 ngày 01/10/2018

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.

Hitokiri Battousai viết 19:17 ngày 01/10/2018

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

Bài liên quan
0