Trong quá trình lập trình hướng đối tượng với ngôn ngữ C++, từ khoá this
đóng một vai trò quan trọng, giúp truy cập đối tượng hiện hành của một lớp. Khi làm việc với các hàm thành viên trong một lớp, từ khoá this
cung cấp một cách để tham chiếu đến đối tượng cụ thể đang thực thi hàm tam giác.
Khái niệm cơ bản về từ khóa this
Từ khóa this
trong C++ là một con trỏ đặc biệt, biểu thị địa chỉ của đối tượng hiện tại. Nó xuất hiện trong hầu hết các hàm thành viên của lớp và được sử dụng ngầm định để tham chiếu đến các thành viên của đối tượng.
Ví dụ Cơ Bản
Giả sử có một lớp đơn giản là Rectangle
với các thuộc tính là chiều dài và chiều rộng. Hàm thành viên setValues
sẽ thiết lập các giá trị cho những thuộc tính này:
class Rectangle {
private:
int length;
int width;
public:
void setValues(int length, int width) {
this->length = length;
this->width = width;
}
int area() {
return length * width;
}
};
Trong đoạn mã trên, this->length
và this->width
chỉ đến các thuộc tính của đối tượng đang gọi hàm setValues
. Khi viết this->length
, nó giúp phân biệt giữa thuộc tính của lớp và tham số của hàm có cùng tên.
Ưu điểm của việc sử dụng từ khóa this
- Phân biệt giữa các thành phần: Sử dụng
this
giúp rõ ràng hóa mã nguồn khi tham số của một hàm trùng tên với thành viên của lớp. - Truyền địa chỉ của đối tượng: Trong một số trường hợp, bạn có thể cần truyền con trỏ của đối tượng hiện tại tới một hàm khác hoặc đến một lớp khác. Từ khoá
this
làm cho việc này dễ dàng hơn. - Triển khai chuỗi phương thức: Kỹ thuật chuỗi phương thức (method chaining) rất phổ biến trong C++. Từ khóa
this
cho phép bạn trả về đối tượng hiện tại, giúp kết nối các lời gọi phương thức liên tiếp.
Chuỗi phương thức (Method Chaining)
Chuỗi phương thức là một kỹ thuật lập trình, trong đó nhiều phương thức trên một đối tượng được gọi liên tiếp trong một câu lệnh duy nhất. Xem xét lớp Rectangle
với kỹ thuật chuỗi phương thức:
class Rectangle {
private:
int length;
int width;
public:
Rectangle& setLength(int length) {
this->length = length;
return *this;
}
Rectangle& setWidth(int width) {
this->width = width;
return *this;
}
int area() const {
return length * width;
}
};
Với lớp trên, bạn có thể viết:
Rectangle rect;
rect.setLength(10).setWidth(20);
Truyền đối tượng hiện tại thông qua this
Hãy xem xét trường hợp bạn muốn so sánh hai đối tượng Rectangle
để kiểm tra chúng có giống nhau hay không:
class Rectangle {
private:
int length;
int width;
public:
bool isEqual(const Rectangle& other) const {
return (this->length == other.length && this->width == other.width);
}
// các phương thức khác...
};
Trong hàm isEqual
, this
được sử dụng để truy cập các giá trị của đối tượng hiện tại và so sánh chúng với các giá trị của đối tượng other
.
Kết Luận
Từ khoá this
là một phần cơ bản trong lập trình hướng đối tượng với C++. Nó cung cấp một cách tiện lợi và hiệu quả để truy cập và thao tác các thành viên của đối tượng hiện tại, giúp phân biệt chúng với các biến cục bộ hoặc tham số hàm có cùng tên. Ngoài ra, từ khoá này còn hỗ trợ nhiều kỹ thuật lập trình nâng cao như chuỗi phương thức và truyền đối tượng hiện tại đến các hàm khác, làm cho mã nguồn trở nên sáng sủa và hiệu quả hơn.
Comments