[C/C++] Phân biệt C và C++

Khi mới buớc chân vào con đường lập trình chúng ta thường học ngôn ngữ lập trình C để làm quen với cú pháp trong lập trình, sau đó học tới các ngôn ngữ bậc cao hơn như C++, Java….để làm quen với lập trình hướng đối tượng.

Với những bạn mới tiếp xúc với lập trình thường xảy ra tình trạng nhầm lẫn giữa 2 ngôn ngữ lập trình C và C++. Mặc dù C và C++ là 2 ngôn ngữ riêng biệt nhưng đôi khi chúng ta hay đánh đồng chúng với nhau.

Khi học lập trình C++ như 1 thói quen chúng ta vẫn sử dụng cú pháp, câu lệnh của C. Mặc dù C++ được thiết kế để tương thích với C, tuy nhiên việc sử dụng lẫn lộn như vậy sẽ không tận dụng được hết các điểm mạnh của C++.

Chúng ta thử điểm qua lại 1 số cú pháp trong C hay dùng trong C++:

  • Dùng printf/scanf thay vì dùng cout/cin
  • Dùng malloc/free thay vì dùng new/delete để cấp phát, giải phóng bộ nhớ
  • Sử dụng mảng đơn thuần thay vì dùng array trong STL
  • Sử dụng C-style cast thay vì new-style cast trong C++ (static_cast, dynamic_cast…)
  • Sử dung mảng char thay vì sử dụng string.
    …………

Còn dưới đây là những vấn đề  khác nhau cơ bản giữa C và C++.

C++C
Hỗ trợ lập trình hướng đối tượng.Lập trình thủ tục, KHÔNG hỗ trợ lập trình hướng đối tượng.
Hỗ trợ nạp chồng (overloading)KHÔNG hỗ trợ nạp chồng (overloading)
Hỗ trợ tham chiếuKHÔNG có tham chiếu
Hỗ trợ lập trình tổng quát (Generic programming) sử dụng templateKHÔNG hỗ trợ lập trình tổng quát

Trên đây là những vấn đề giúp các bạn phần nào hiểu được về C và C++, hi vọng nó sẽ giúp ích cho các bạn khi học lập trình không còn nhầm lẫn giữa C và C++, tận dụng các điểm mạnh mà C++ hỗ trợ để giải quyết vấn đề nhanh nhất.

Nếu có vấn đề gì các bạn comment bên dưới hoặc lập topic trong forum để cùng thảo luận.

Có 2 bình luận

  1. Stanley

    “int *b = &a; // C compile error”
    C không hỗ trợ tham chiếu thì đúng rồi. Nhưng phép toán & ở trên không phải là tham chiếu, mà là phép toán lấy địa chỉ nên nó vẫn compile được nha bạn.

    int& b = a; // đây mới là tham chiếu, C compile error

Leave A Comment?