Lập trình C++ - Con trỏ this
Con trỏ this
Mỗi đối tượng trong C ++ có quyền truy cập vào địa chỉ riêng của nó thông qua một con trỏ quan trọng được gọi là con trỏ this. Con trỏ this là một tham số ngầm định cho tất cả các hàm thành viên. Vì vậy, bên trong một hàm thành viên, điều này có thể được sử dụng để chỉ đối tượng gọi.
Hàm friend không có con trỏ this, bởi vì friend không phải là thành viên của một lớp. Chỉ các hàm thành viên mới có con trỏ này.
Tôi hiểu rằng là hơi khó để hình dung khái niệm này, vậy nên đã làm cho các bạn 1 hình vẽ.
Có thể có 3 cách sử dụng chính của từ khóa này trong C ++.
- Có thể được sử dụng để truyền đối tượng hiện tại làm tham số cho phương thức khác.
- Có thể được sử dụng để tham chiếu thuộc tính của lớp hiện tại.
- Có thể được sử dụng để khai báo các chỉ mục.
Mỗi đối tượng đều có sở hữu con trỏ này.
! this
được sử dụng trong tất cả các lớp trong ngôn ngữ C++. Các bạn sẽ không thể tạo ra 1 biến tên là this bởi vì việc này sẽ sinh ra xung đột. Cũng vì lý do này, các bạn sẽ không thể tạo ra các biến hay hàm có tên là class
, new
, delete
, return
, vv… vì các từ khóa này đã được giữ bởi C++ dùng vào các mục đích riêng.
Ví dụ:
#include<iostream>
#include<string>
using namespace std;
/* Định nghĩa lớp */
class Car {
private:
int speed; // Tốc độ
string mark; // Nhãn hiệu
float price; // Giá xe
// Khởi tạo với các giá trị ngầm định cho các tham số
public:
Car(int speed, string mark , float price);
void show(); // Giới thiệu xe
};
/* Khai báo phương thức bên ngoài lớp */
Car::Car(int speed, string mark, float price) {
this->speed = speed;
this->mark = mark;
this->price = price;
}
void Car::show() { // Phương thức giới thiệu xe
cout << "This is a " << mark << " having a speed of "
<< speed << "km / h and its price is $" << price << endl;
return;
}
// Hàm main, chương trình chính
int main() {
Car myCar1(120, "Toyota", 3000); // Khởi tạo đối tượng 1
Car myCar2(150, "Mercedes", 5000);// Khởi tạo đối tượng 2
// Giới thiệu xe thứ nhất
cout << "Xe thu nhat: " << endl;
myCar1.show();
// Giới thiệu xe thứ hai
cout << "Xe thu hai: " << endl;
myCar2.show();
system("pause");
return 0;
}
Kết quả:
Xe thu nhat:
This is a Toyota having a speed of 120km / h and its price is $3000
Xe thu hai:
This is a Mercedes having a speed of 150km / h and its price is $5000
Press any key to continue . . .