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.
Nội dung chính
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; }
Kết quả:
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; }
Kết quả:
Box1 co the tich nho hon Box2