Con trỏ this trong C++
Trong bài viết dưới đây, chúng ta sẽ cùng tìm hiểu về con trỏ this trong C++. Vậy con trỏ this có gì đặc biệt. Khi nào thì cần dùng con trỏ this. Chúng ta sẽ cùng eLib.VN tìm hiểu trong nội dung sau đây.
Mục lục nội dung
1. Con trỏ this là gì?
Mỗi đối tượng trong C++ có sự truy cập tới vị trí riêng của nó thông qua một con trỏ quan trọng gọi là con trỏ this. Con trỏ this trong C++ là một từ khóa đề cập đến thể hiện hiện tại của lớp, là một tham số ẩn với tất cả hàm thành viên. Vì thế, bên trong một hàm thành viên, con trỏ this có thể tham chiếu tới đối tượng đang gọi.
Các hàm friend không có con trỏ this, bởi vì friend không phải là các thành viên của một lớp. Chỉ có các hàm thành viên trong C++ là có con trỏ this.
2. Ví dụ con trỏ this trong C++
Hãy xem ví dụ sau để hiểu về con trỏ this trong C++:
VD1: Sử dụng con trỏ this bên trong Constructor để gán giá trị cho đối tượng hiện tại:
#include <iostream>
using namespace std;
class Employee {
public:
int id; //data member (bien instance)
string name; //data member(bien instance)
float salary;
Employee(int id, string name, float salary) {
this->id = id;
this->name = name;
this->salary = salary;
}
void display() {
cout << id << " " << name << " " << salary << endl;
}
};
int main(void) {
Employee e1 = Employee(101, "Phan Van Vinh", 500); // tao doi tuong Employee
Employee e2 = Employee(102, "Dao Van Hoa", 1000); // tao doi tuong Employee
e1.display();
e2.display();
return 0;
}
101 Phan Van Vinh 500
102 Dao Van Hoa 1000
VD2: So sánh thể tích của 2 hình hộp:
#include <iostream>
using namespace std;
class Box {
private:
double chieudai; // chieu dai cua mot box
double chieurong; // chieu rong cua mot box
double chieucao; // chieu cao cua mot box
public:
Box(double chieudai, double chieurong, double chieucao) {
this->chieudai = chieudai;
this->chieurong = chieurong;
this->chieucao = chieucao;
}
double theTich() {
return chieudai * chieurong * chieucao;
}
int sosanh(Box box) {
if (this->theTich() > box.theTich()) {
return 1;
} else if (this->theTich() > box.theTich()) {
return 0;
} else {
return -1;
}
}
};
int main(void) {
Box box1 = Box(2.5, 4, 2); // khai bao box1
Box box2 = Box(4.5, 2, 3); // khai bao box2
if (box1.sosanh(box2) == 1) {
cout << "Box1 co the tich lon hon Box2" << endl;
} else if (box1.sosanh(box2) == 0) {
cout << "Box1 co the tich bang Box2" << endl;
} else {
cout << "Box1 co the tich nho hon Box2" << endl;
}
return 0;
}
Box1 co the tich nho hon Box2
Trên đây là bài viết của eLib.VN về Con trỏ this trong C++. Con trỏ this tham chiếu đến đối tượng hiện tại của lớp, vì vậy khuyến khích các bạn nên đặt tham số của hàm xây dựng trùng tên với tên của dữ liệu thành viên và sử dụng con trỏ this trong hàm xây dựng.
Tham khảo thêm
- doc Lập trình hướng đối tượng trong C++
- doc Lớp và đối tượng trong C++
- doc Constructor trong C++
- doc Từ khóa static trong C++
- doc Struct trong C++
- doc Enum trong C++
- doc Hàm Friend trong C++
- doc Các hàm Math trong C++
- doc Tính kế thừa trong C++
- doc Tính đa hình trong C++
- doc Tính trừu tượng trong C++
- doc Tính đóng gói trong C++
- doc Interface trong C++