Bài giảng Ngôn ngữ lập trình C++ - Chương 10: So sánh C/C++

ngoài một số ngoại lệ, C là tập con của C++

chủ yếu do C++ chú trọng hơn vào việc kiểm tra kiểu dữ liệu

các trình biên dịch phát hiện được phần lớn

 

 

ppt11 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1677 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình C++ - Chương 10: So sánh C/C++, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Ngôn ngữ lập trình C++Chương 10 – So sánh C/C++ Tổng quan ngoài một số ngoại lệ, C là tập con của C++ chủ yếu do C++ chú trọng hơn vào việc kiểm tra kiểu dữ liệu các trình biên dịch phát hiện được phần lớn Mã C không phải C++ gọi hàm mà không cần khai báo trước. cú pháp khai báo không đầy đủ kiểu dữ liệu của các đối số main()	/* poor style C. Not C++ */ { double sq2 = sqrt(2);	 printf("the square root of 2 is %g\n, sq2); } void f(a,p,c) char *p; char c; { /* ... */ }	/* C, Not C++ */ void f(int a, char *p, char c) { /* ... */ }	/* required by C++ */ Mã C không phải C++ định nghĩa struct tại khai báo kiểu trả về và kiểu đối số gán các giá trị nguyên cho các biến kiểu enum đối tượng toàn cục có thể được khai báo vài lần nhưng coi là được định nghĩa một lần struct S { int x,y; } f();	/*C. Not C++*/ void g(struct S {int x,y;} y); /*C. Not C++*/ enum Direction {up, down }; Direction d = 1;	/* error in C++, ok in C */ int t; int t;	/* defines or declares a singer int t, not C++ */ Mã C không phải C++ khởi tạo mảng bằng chuỗi giá trị dài hơn độ dài mảng đòi hỏi kiểu mặc định int char v[5] = "Oscar"; /* ok in C, the terminating 0 not used. Not C++ */ const a = 7;	/* In C, type int assumed. Not C++ */ Các tính năng của C++ mà C không có Ký hiệu/cú pháp chú thích // (đang được thêm vào C) const khai báo tại các câu lệnh khai báo tại phần khởi tạo và điều kiện của lệnh for tên cấu trúc không cần kèm theo từ khóa struct Các tính năng của C++ mà C không có tăng cường hệ thống kiểu kiểm tra kiểu của đối số hàm (sau này đã được thêm vào C) liên kết an toàn kiểu dữ liệu: cho phép duy nhất 1 định nghĩa cho mỗi kiểu/biến quản lý bộ nhớ bằng new và delete const cú pháp đổi kiểu mới (cast) an toàn hơn Các tính năng của C++ mà C không có tiện ích cho các kiểu dữ liệu người dùng class hàm thành viên và lớp thành viên constructor và destructor lớp con hàm ảo và lớp trừu tượng quyền truy nhập friends con trỏ tới thành viên các thành viên static/mutable chồng toán tử tham chiếu Các tính năng của C++ mà C không có các tính năng cho tổ chức chương trình template hàm inline đối số mặc định chồng hàm không gian tên cách xác định phạm vi tường minh (toán tử ::) định danh kiểu tại thời gian chạy Vấn đề với các cài đặt cũ hơn của C++ C++ đã được dùng rộng rãi từ 1983, nhiều phiên bản được định nghĩa và phát triển độc lập cần có chuẩn để người cài đặt và người sử dụng có cùng một định nghĩa về C++ để làm việc thực tế: không phải cài đặt nào cũng cung cấp đầy đủ các tính năng của C++ chuẩn. nhiều phiên bản thiếu đặc tính ngôn ngữ: đa thừa kế, kiểu Bool, template... hỗ trợ thư viện không đầy đủ: lớp String... làm lệch lạc phong cách lập trình của người mới học, cách nhìn thiên lệch về C++: để bắt đầu học C++, tập con tốt nhất của ngôn ngữ C++ không phải các tiện ích bậc thấp và không phải những phần chung của C và C++ Vấn đề với các cài đặt cũ hơn của C++ Lời khuyên cho chương trình có tổ chức và bảo trì tốt thiết kế cho ngôn ngữ C++ đầy đủ chứ không phải cho một tập con của C++ sử dụng một cài đặt tuân theo chuẩn càng sát càng tốt giảm tối đa sự phụ thuộc vào các khía cạnh tùy thuộc cài đặt và các khía cạnh không xác định chỉ sử dụng các mở rộng ngôn ngữ đặc thù của cài đặt khi thật sự cần thiết 

File đính kèm:

  • pptBài giảng Ngôn ngữ lập trình C++ - Chương 10 So sánh CC++.ppt
Tài liệu liên quan