Một trong những lợi ích lớn nhất của tham chiếu qua con trỏ là tính đơn giản và dễ đọc hơn. Như mọi khi, khi bạn đơn giản hóa thứ gì đó, bạn sẽ làm cho nó dễ sử dụng hơn nhưng với cái giá phải trả là sự linh hoạt và khả năng kiểm soát mà bạn có được với những thứ cấp thấp (như những người khác đã đề cập).
Con trỏ thường bị chỉ trích là 'xấu xí'.
class* myClass = new class();
Bây giờ mỗi khi bạn sử dụng nó, bạn phải tham khảo nó trước tiên bằng cách
myClass->Method() or (*myClass).Method()
Mặc dù mất đi một số khả năng đọc và tăng thêm độ phức tạp, mọi người vẫn cần sử dụng con trỏ thường xuyên làm tham số để bạn có thể sửa đổi đối tượng thực tế (thay vì chuyển theo giá trị) và để đạt được hiệu suất khi không phải sao chép các đối tượng lớn.
Đối với tôi, đây là lý do tại sao các tham chiếu được 'sinh ra' ngay từ đầu để cung cấp lợi ích tương tự như con trỏ nhưng không có tất cả cú pháp con trỏ đó. Bây giờ bạn có thể chuyển đối tượng thực tế (không chỉ giá trị của nó) VÀ bạn có một cách tương tác bình thường, dễ đọc hơn với đối tượng.
MyMethod(&type parameter)
{
parameter.DoThis()
parameter.DoThat()
}
Tham chiếu C ++ khác với tham chiếu C # / Java ở chỗ khi bạn gán một giá trị cho nó, bạn không thể gán lại nó (và nó phải được gán khi nó được khai báo). Điều này cũng giống như việc sử dụng con trỏ const (một con trỏ không thể được trỏ lại đến đối tượng khác).
Java và C # là những ngôn ngữ hiện đại, cấp độ rất cao đã dọn dẹp rất nhiều mớ hỗn độn đã tích tụ trong C / C ++ qua nhiều năm và con trỏ chắc chắn là một trong những thứ cần được 'dọn dẹp'.
Theo như nhận xét của bạn về việc biết con trỏ giúp bạn trở thành một lập trình viên mạnh mẽ hơn, thì điều này đúng trong hầu hết các trường hợp. Nếu bạn biết 'cách nào đó' hoạt động thay vì chỉ sử dụng nó mà không biết, tôi sẽ nói rằng điều này thường có thể mang lại cho bạn một lợi thế. Bao nhiêu của một cạnh sẽ luôn thay đổi. Rốt cuộc, việc sử dụng một thứ gì đó mà không biết nó được thực hiện như thế nào là một trong những nét đẹp của OOP và Interfaces.
Trong ví dụ cụ thể này, những gì biết về con trỏ sẽ giúp bạn tham khảo? Hiểu rằng một tham chiếu C # KHÔNG phải là bản thân đối tượng mà trỏ đến đối tượng là một khái niệm rất quan trọng.
# 1: Bạn KHÔNG chuyển qua giá trị
Tốt cho người mới bắt đầu khi bạn sử dụng một con trỏ, bạn biết rằng con trỏ chỉ chứa một địa chỉ, đó là nó. Bản thân biến gần như trống rỗng và đó là lý do tại sao nó rất hay để chuyển làm đối số. Ngoài việc đạt được hiệu suất, bạn đang làm việc với đối tượng thực tế nên bất kỳ thay đổi nào bạn thực hiện không phải là tạm thời
# 2: Đa hình / Giao diện
Khi bạn có một tham chiếu là một kiểu giao diện và nó trỏ đến một đối tượng, bạn chỉ có thể gọi các phương thức của giao diện đó mặc dù đối tượng có thể có nhiều khả năng hơn. Các đối tượng cũng có thể triển khai các phương thức giống nhau theo cách khác nhau.
Nếu bạn hiểu rõ những khái niệm này thì tôi không nghĩ rằng bạn đang thiếu quá nhiều việc không sử dụng con trỏ. C ++ thường được sử dụng như một ngôn ngữ để học lập trình vì đôi khi bạn làm bẩn tay thì rất tốt. Ngoài ra, làm việc với các khía cạnh cấp thấp hơn khiến bạn đánh giá cao sự thoải mái của một ngôn ngữ hiện đại. Tôi bắt đầu với C ++ và bây giờ là một lập trình viên C # và tôi cảm thấy làm việc với con trỏ thô đã giúp tôi hiểu rõ hơn về những gì đang diễn ra.
Tôi không nghĩ rằng tất cả mọi người đều cần phải bắt đầu với con trỏ, nhưng điều quan trọng là họ hiểu tại sao các tham chiếu được sử dụng thay vì các kiểu giá trị và cách tốt nhất để hiểu điều đó là nhìn vào tổ tiên của nó, con trỏ.