2013-07-14 44 views
9

Tôi đã xem xét một số mã nguồn mở và tôi nhận thấy rằng đối với một số phương thức, thay vì sử dụng khoảng trống cho kiểu trả về, chúng đã sử dụng tham chiếu đến lớp đó.Tham chiếu đối tượng vs kiểu trả về Void cho phương thức

Ví dụ:

class Object 
{ 
private: 
    float m_x; 
public: 
    Object(); 
    Object& setX(float x) 
    { 
     m_x = x; 
     return *this; 
    } 
}; 

Thông thường, tôi sẽ viết các chức năng tương tự như thế này:

class Object 
{ 
private: 
    float m_x; 
public: 
    Object(); 
    void setX(float x) 
    { 
     m_x = x; 
    } 
}; 

Có lợi thế của việc sử dụng một trong khác không?

Trả lời

8

Có, có một số lợi thế khi trả lại tham chiếu. Khi trả về một tham chiếu, bạn có thể tiếp tục làm việc trên tham chiếu trả về và chuỗi các cuộc gọi hàm đa hàm với nhau. Ví dụ nếu có một chức năng setY quá, bạn có thể làm điều này:

object.setX(5).setY(10); 

Trả về một tham chiếu không thực sự có khó khăn nhưng cho phép một số điều tốt đẹp. Nó có thể được sử dụng để tạo ra giao diện thông thạo, giải quyết việc thiếu các tham số có tên trong C++ nếu bạn muốn, và những thứ khác.

đọc liên quan:

+0

Cảm ơn bạn rất nhiều vì câu trả lời. Tôi không nhận ra rằng bạn có thể làm điều đó trong C++. – Xplane

+5

Kiểu này được gọi là ["phương pháp chuỗi"] (http://en.wikipedia.org/wiki/Method_chaining) hoặc ["giao diện thông thạo"] (http://martinfowler.com/bliki/FluentInterface.html). –

Các vấn đề liên quan