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.

Con trỏ this trong C++

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;
}
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

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.

Ngày:28/10/2020 Chia sẻ bởi:Nguyễn Minh Duy

CÓ THỂ BẠN QUAN TÂM