Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Có lợi ích gì khi truyền bằng con trỏ so với truyền bằng tham chiếu trong C++?

Con trỏ có thể nhận tham số null trong khi tham chiếu không thể. Chỉ dùng con trỏ nếu muốn truyền "không đối tượng".

Truyền bằng con trỏ tường minh cho phép thấy rõ tại điểm gọi (call site) đối tượng được truyền bằng tham chiếu hay giá trị.

Dưới đây là ví dụ đơn giản về truyền bằng con trỏ và truyền bằng tham chiếu:

Truyền bằng con trỏ

Ví dụ

#include <iostream>
using namespace std;

void swap(int* a, int* b) {
  int c = *a;
  *a = *b;
  *b = c;
}

int main() {
  int m = 7, n = 6;
  cout << "Before Swap\n";
  cout << "m = " << m << " n = " << n << "\n";
  swap(&m, &n);
  cout << "After Swap by pass by pointer\n";
  cout << "m = " << m << " n = " << n << "\n";
}

Kết quả

Before Swap
m = 7 n = 6
After Swap by pass by pointer
m = 6 n = 7

Truyền bằng tham chiếu

Ví dụ

#include <iostream>
using namespace std;

void swap(int& a, int& b) {
  int c = a;
  a = b;
  b = c;
}

int main() {
  int m = 7, n = 6;
  cout << "Before Swap\n";
  cout << "m = " << m << " n = " << n << "\n";
  swap(m, n);
  cout << "After Swap by pass by reference\n";
  cout << "m = " << m << " n = " << n << "\n";
}

Kết quả

Before Swap
m = 7 n = 6
After Swap by pass by reference
m = 6 n = 7