Cộng đồng chia sẻ tri thức Doc24.vn

Trả về giá trị bởi tham chiếu trong C++

Gửi bởi: Phạm Thị Phương Hoa vào ngày 2019-10-28 07:42:06

Một chương trình C++ có thể được làm cho nó dễ dàng hơn để đọc và duy trì bởi sử dụng các tham chiếu thay vì sử dụng con trỏ. Một hàm C++ có thể trả về một tham chiếu theo cách tương tự như nó trả về một con trỏ.

Khi một hàm trả về một tham chiếu, nó trả về một con trỏ ẩn tới giá trị trả về của nó. Theo cách này, một hàm có thể được sử dụng ở phần trái của một lệnh gán. Bạn xét ví dụ sau:

#include <iostream>
#include <ctime>
 
using namespace std;
 
double mang[] = {5.6, 11.4, 43.1, 25.6, 20.2};
// phan dinh nghia ham 
double& tlGiaTri( int i )
{
  return mang[i];   // tra ve mot tham chieu toi phan tu thu i
}
 
// ham main de goi phan dinh nghia ham tren.
int main ()
{
 
   cout << "Gia tri truoc khi thay doi:" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "mang[" << i << "] = ";
       cout << mang[i] << endl;
   }
 
   tlGiaTri(1) = 12.44; // thay doi phan tu thu 2
   tlGiaTri(3) = 25.0;  // thay doi phan tu thu 4
 
   cout << "Gia tri sau khi thay doi:" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "mang[" << i << "] = ";
       cout << mang[i] << endl;
   }
   return 0;
}

Chạy chương trình C++ trên sẽ cho kết quả như hình sau:

Khi trả về một tham chiếu, bạn nên cẩn thận rằng đối tượng đang được tham chiếu là không ra khỏi phạm vi. Vì thế, nó là không hợp lệ để trả về một tham chiếu tới biến cục bộ. Nhưng bạn có thể trả về một tham chiếu trên một biến tĩnh (static).

int& func() {
   int q;
   //! return q; // Lenh dang nay se cho mot Compile time error
   static int x;
   return x;     // An toan, x ben ngoai pham vi nay
}
Lượt xem: 214