Để có cái nhìn chi tiết về Tham chiếu (Reference) trong C++, hãy đọc bài viết dưới đây từ Mytour.
Nội dung bài viết:
1. Tham chiếu (Reference) trong C++
2. So sánh giữa tham chiếu và con trỏ trong C++
3. Ví dụ về tham chiếu trong C++
1. Khám phá về Tham chiếu trong C++
Khi một biến được đặt làm tham chiếu, tên của nó sẽ khác với tên biến gốc. Để khai báo một biến là tham chiếu, chúng ta sử dụng ký hiệu '&' trong phần khai báo.
Dưới đây là một số ví dụ về tham chiếu trong ngôn ngữ lập trình C++:
- Ví dụ 1:
Bao gồm
sử dụng không gian tên std;
int chính()
{
int a = 10;
// tham chiếu tới a.
int& thamChieu = a;
// Giá trị của a thay đổi thành 20
thamChieu = 20;
cout < 'a=' << a << endl ;
// Giá trị của a thay đổi thành 30
a = 30;
cout << ' thamChieu=' << thamChieu << endl ;
trả về 0;
}
Kết quả đầu ra có dạng:
a = 20
thamChieu = 30
- Ví dụ 2:
Một ví dụ khác sử dụng tham chiếu để hoán đổi giá trị của hai biến:
Bao gồm
sử dụng không gian tên std;
void trao đổi (int& dau, int& sau)
{
int temp = dau;
dau = sau;
sau = temp;
}
int chính()
{
int a = 2, b = 3;
trao đổi( a, b );
cout << a << ' '=''><>
trả về 0;
}
Kết quả đầu ra là: 3 và 2.
2. Tham chiếu và con trỏ trong C++
Trong ngôn ngữ lập trình C++, cả tham chiếu và con trỏ đều được sử dụng để thay đổi các biến cục bộ trong một hàm từ hàm khác, hoặc để lưu trữ bản sao của các đối tượng lớn khi truyền dưới dạng đối số cho một hàm hoặc được trả về từ hàm.
Mặc dù giữa tham chiếu và con trỏ có nhiều điểm tương đồng, nhưng cũng có những khác biệt:
- Con trỏ có thể được khai báo với kiểu void trong khi tham chiếu không thể.
Ví dụ minh họa:
int x = 10;
void* aa = &a;. //hợp lệ
Không thể sử dụng void &ar = a; // không hợp lệ
- Sau khi tham chiếu được tạo, nó không thể trỏ đến đối tượng khác, không thể chỉnh sửa, trong khi con trỏ có thể.
- Tham chiếu không thể mang giá trị NULL. Con trỏ thường được tạo NULL để thông báo rằng nó không trỏ đến bất kỳ giá trị hợp lệ nào.
- Tham chiếu phải được khởi tạo ngay khi khai báo, trong khi con trỏ không cần.
Vì những hạn chế này, tham chiếu trong C++ không được sử dụng để triển khai cấu trúc dữ liệu như danh sách liên kết, cây, ... . Trong Java, tham chiếu không bị hạn chế, đó là lý do tại sao Java không cần con trỏ.
- Tham chiếu an toàn và dễ sử dụng hơn:
+ An toàn hơn: Vì tham chiếu phải được khởi tạo, nên chúng tự nhiên an toàn hơn con trỏ khó có thể tồn tại.
+ Dễ sử dụng: Tham chiếu không cần toán tử trỏ để truy cập giá trị, chúng có thể sử dụng như các biến thông thường. Thêm vào đó, với toán tử '&' chỉ cần tại thời điểm khai báo, các thành viên của một tham chiếu đối tượng có thể được truy cập bằng toán tử (.). Ngược lại với con trỏ, sử dụng toán tử (->) để truy cập các thành viên.
Cuối cùng, tham chiếu cũng có thể được sử dụng để nạp chồng một số toán tử như ++.
3. Một số ví dụ về tham chiếu trong C++
// tham chiếu.cpp
#include
struct S {
short i;
};
int chính() {
S s; // khai báo đối tượng.
S& thamChiếuS = s; // khai báo tham chiếu.
s.i = 3;
printf_s('%d\n', s.i);
printf_s('%d\n', thamChiếuS.i);
thamChiếuS.i = 4;
printf_s('%d\n', s.i);
printf_s('%d\n', thamChiếuS.i);
}
Kết quả đầu ra có dạng:
3
3
4
4
Bài viết trên đã giúp bạn hiểu rõ hơn về tham chiếu (Reference) trong C++. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về date và time trong C++, một chủ đề quan trọng khi học lập trình C. Hãy cùng tìm hiểu về Date và Time để mở rộng kiến thức của bạn.
