Lập trình C++ - C vs C++

Sự khác biệt giữa C với C++

Hầu hết IT trên thế giới đều biết về 2 ngôn ngữ lập trình C, C++. Như chúng ta đã biết, C++ là ngôn ngữ ra đời sau ngôn ngữ C, thực chất nó mở rộng cho ngô ngữ C nhằm tăng cường tính an toàn, cung cấp cho các lập trình viên nhiều lựa chọn hơn, đơn giản hóa lập trình ở mức cao hơn, và cung cấp một cách tiếp cận tốt hơn đối với những chương trình có quy mô lớn.
 C++ cũng là ngôn ngữ lớn hơn với nhiều tính năng và phức tạp hơn so với C. Giữa C và C++ có rất nhiều khác biệt. Trong khuôn khổ bài viết này, tôi chỉ liệt kê 10 điểm khác biệt chính giữa 2 ngôn ngữ này.

STT. C C++
1) C tuân theo lập trinh kiểu thủ tục. C ++ là đa mô hình. Nó hỗ trợ cả hai hướng thủ tụchướng đối tượng.
2) Dữ liệu kém an toàn hơn. Bạn có thể sử dụng công cụ sửa đổi cho các thành viên của lớp để làm cho nó không thể truy cập được đối với người dùng bên ngoài.
3) Sử dụng phương pháp tiếp cận từ trên xuống (top-down). Sử dụng phương pháp tiếp cận từ dưới lên  (bottom-up).
4) C không hỗ trợ quá tải hàm. C++ hỗ trợ quá tải hàm.
5) Không thể khai báo hàm trong các structure. Có thể khai báo hàm trong các structure.
6) Không có biến tham chiếu, chỉ hỗ trợ con trỏ. Hỗ trợ cả biến tham chiếu và con trỏ.
7) Sử dụng các hàm scanf và printf để nhập xuất. Sử dụng các hàm cin>>  cout<< để nhập xuất..
8) Không thể quá tải toán tử trong C. Có thể quá tải toán tử trong C ++.
9) Các chương trình C được chia thành các thủ tục và modules Các chương trình C ++ được chia thành các hàm và các lớp.
10) C không cấp namespace. C++ hỗ trợ namespace.
11) Bắt lỗi ngoại lệ không dễ dàng. C++ sử dụng khối Try and Catch để bắt lỗi ngoại lệ.
12) Không hỗ trợ các hàm inline, thay vào đó có thể sử dụng khai báo#define Hỗ trợ các hàm inline.
13) Được xem là một ngôn ngữ lập trình cấp thấp. Được xem là sự kết hợp giữa ngôn ngữ lập trình cấp thấp và cấp cao.

Dưới đây là danh sách các tính năng được hỗ trợ trong C++ (C không hỗ trợ).

  • Classes
  • Member functions
  • Constructors and destructors
  • Derived classes
  • Virtual functions
  • Abstract classes
  • Access control (public, private, protected)
  • friend functions
  • Pointers to members
  • static members
  • mutable members
  • Operator overloading
  • References
  • Templates
  • Inline functions
  • Default arguments
  • Function overloading
  • Namespaces
  • Exception handling
  • Run-time type identification
  • // comments
  • True const
  • Declarations as statements
  • Automatically typedef’d struct tags
  • Type safe linkage
  • new and delete
  • bool keyword
  • Safer and more robust casting