Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: C++ có những phát triển cơ bản nào dựa trên cơ sở C

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    2

    Question C++ có những phát triển cơ bản nào dựa trên cơ sở C

    e mới tìm hiểu về C++ chưa được nhiều lắm
    vẫn còn có rất nhiều thắc mắc, mọi người cho e hỏi
    C++ có những phát triển cơ bản nào dựa trên cơ sở C, hay nói cách khác C++ kế thừa những j cơ bản từ C?
    Thanks mọi người nhiều

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Recycle Bin
    Bài viết
    358

    C tất tần tất là C++.
    Theo mình nghĩ điểm khác biệt và cũng là điểm mạnh của C++ so với C là thêm vào khả năng lập trình hướng đối tượng.
    YH : lobuocphuudu_218
    Phone : 0126 463 5095

    http://forums.congdongcviet.com/signaturepics/sigpic55872_2.gif

  3. #3
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    code C thì chắc gì đã chạy dc trong C++.



    tham khảo trên wiki:

    "C++ không phải là C mở rộng

    Trong khi nhiều mã nguồn viết trong C sẽ được dịch như là ngôn ngữ C++ mà không gặp trở ngại gì thì cũng có một số khác nhau giữa hai ngôn ngữ đã ngăn không cho C++ trở thành (ngôn ngữ) mở rộng của C. Chẳng hạn như C++ cấm gọi hàm main bên trong một chương trình, trong khi điều này hợp lệ trong C. Thêm vào đó C++ có nhiều giới hạn trong một số tính năng như là nó thiếu sự chuyển kiểu mặc định giữa các kiểu con trỏ không liên hệ nhau và cũng không cho phép một hàm được sử dụng nếu chưa khai báo.
    Một vấn đè thường xảy ra khi chuyển dịch từ C sang C++ là nhiều từ khoá được thêm vào trong C++. Điều này có thể làm cho một số tên trong C trở thành bất hợp lệ trong C++. Thí dụ:
    struct template {
    int new;
    struct template *class;
    };
    hợp lệ trong C nhưng không dùng được trong C++ vì các từ khoá template, new và class.
    Sự khác nhau còn xảy ra trong kiểu trình bày. Thí dụ như trong một cách cũ và truyền thống của việc khai báo trong C sau đây sẽ không được chấp thuận trong C++:
    int subtract(minuend, subtrahend)
    int minuend;
    int subtrahend;
    {
    return minuend - subtrahend;
    }
    Theo yêu cầu mới trong C++ nên viết thành:
    int subtract(int minuend, int subtrahend)
    {
    return minuend - subtrahend;
    }
    "

    "
    Quan hệ với C++

    C++ nguyên là sự kết thừa từ C. Mặc dù vậy, không phải mọi chương trình trong C đều hợp lệ trong C++. Vì là hai ngôn ngữ độc lập, số lượng không tương thích giữa hai ngôn ngữ này đã tăng lên. [2]. Phiên bản cuối cùng C99 đã tạo ra thêm nhiều tính năng xung đột (giữa C và C++). Các sự khác nhau này tạo ra khó khăn để viết các chương trình và thư viện đẻ có thể được dịch và hoạt động chính xác trong cả hai loại mã C hay C++, đồng thời gây nhầm lẫn cho những người lập trình dùng cả hai ngôn ngữ này. Sự chênh lệch này cũng gây khó khăn cho ngôn ngữ này có thể tiếp thu các tính năng của ngôn ngữ kia.
    Bjarne Stroustrup, cha đẻ của C++ đã lập đi lập lại rằng [3]: Các tính chất không tương thích giữa C và C++ nên được hạ thấp càng nhiều càng tốt để mở rộng tối đa khả năng hoạt động thông suốt của hai ngôn ngữ này. Một số người tranh biện rằng vì C và C++ là hai ngôn ngữ khác nhau, sự tương thích giữ chúng thì hữu ích nhưng không phải có tính sống còn, theo lập trường này, nỗ lực để giảm sự không tương thích không được phá hủy cố gắng để nâng cao mỗi ngôn ngữ đứng riêng.
    Ngày nay, những khác nhau căn bản, không kể các mở rộng thêm vào của C++ như là các lớp, các tiêu bản, các không gian tên, và quá tải, giữa hai ngôn ngữ là:
    inline — các hàm inline có giá trị toàn cục trong C++ và chỉ có giá trị trong phạm vi tập tin trong C.
    Từ khóa bool trong C99 thì có riêng tập tin tiêu dề của nó là <stdbool.h>. Các chuẩn C trước đây đã không định nghĩa kiểu boolean và nhiều phương pháp không tương thích đã được dùng để mô phỏng kiểu boolean.
    Các hằng kí tự (được đặt trong dấu ') có độ lớn của một int trong C và có độ lớn của một char trong C++. Mặc dù vậy, ngay cả trong C các hàng này sẽ không bao giờ vượt quá giá trị của một char, cho nên việc chuyển đổi kiểu (char)'a' thì hoàn toàn an toàn.
    Nhừng từ khóa mới thêm vào trong C++ sẽ không thể dược dùng làm các tên trong C như trước đây nữa. (Thí dụ: try, catch, template, new, delete, ...).
    Trong C++, trình dịch tự dộng tạo một "thẻ" cho mỗi struct, union hay enum, do vậy, struct S {}; trong C++ tương đương với typedef struct S {} S; trong C.
    C99 tiếp thu một số tính năng mà xuất hiện đầu tiên trong C++. Trong số đó là:
    Bắt cuộc khai báo nguyên mẫu của hàm.
    Thêm từ khóa inline.
    Hủy bỏ "hiểu ngầm" của sự trả về sẽ có kiểu int."

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Giải thích như trên là trình độ cao, tức là bên trong guồng máy.
    Muốn giải thích kiểu thấp kém, tức là bề ngoài, thì như vầy.

    C là ngôn ngữ được đặt ra trước. Vì thoát thai từ B, ngôn ngữ dùng để viết hệ thống vận hành, nên C được đặt rất đơn giản, rất gần với Assembly code và dùng tối thiểu số từ khóa. Và C là 100% ngôn ngữ lập trình cơ cấu (structured)

    Trong C, toán tử ++ có nghĩa là "tăng lên"

    Tác giả của C++ thấy C là ngôn ngữ có kết cấu hay nên dựa vào đó để phát triển ra một ngôn ngữ có khả năng LTHDT (OOP). Vì vậy, tác giả cố ý đặt tên C++ (nghĩa là C tăng lên).

    Ngoài việc thêm thắt để C++ có khả năng LTHDT, tác giả còn thêm vào một vài chi tiết để "cải tiến" cách lập code.

    Điển hình của việc này là cách truyền tham chiếu cho hàm. Trên nguyên tắc, C không có tham chiếu, tham biến được thực hiện bằng cách truyền con trỏ. C++ thực hiện tham chiếu bằng cách truyền tên tự (alias). Đây là điểm bạn sẽ thấy dùng rất nhiều trên các code C/C++ ở diễn đàn này.

    Điển hình thứ hai là C dùng tên hàm để xác định hàm, hai hàm khác nhau không được trùng tên. Trong khi đó C++ dùng tên và chữ ký (signature) để xác định hàm. Tức là:
    Trong C, nếu ta dã có hàm void abc(void) rồi thì không được đặt hàm nào tên abc nữa
    Trong C++, nếu có void abc(void) rồi thì vẫn được đặt hàm void abc(int x), và hàm void abc(int x, int y); vì các hàm này có chữ ký khác nhau: một hàm không nhận tham số, một hàm nhận một tham số dạng int, và một hàm nhận hai số dạng int.
    Đây là điểm rất quan trọng nhưng bạn sẽ ít thấy trên diễn đàn này (ngoài việc viết hàm dựng cho lớp). Có lẽ tại các bài tập của SV đưa lên diễn đàn không đủ phức tạp để phải dùng đến tính chất này. Tôi nhận thấy SV mới ra trường tương đối yếu về cách viết hàm với nhiều chữ ký.

    Hai điển hình tôi đưa ra như trên hoàn toàn không nhất thiết phải liên quan đến OOP.

    Sự kế thừa của C++ từ C cũng như hầu hết các phương pháp kế thừa, phải theo quy luật vật kế thừa có thể nạp chồng một số hàm và tính chất. Vì vậy đôi khi code thuần túy C bị trình dịch C++ hiểu lầm, bắt buộc phải dịch bằng trình dịch C. Khi include vào một file cpp, nếu không muốn trình dịch C++ lầm lẫn thì phải thêm từ khóa
    extern "C"
    (hầu hết các trình dịch thấy file .c thì biết là dùng trình dịch C, từ khóa trên chỉ dành cho file .cpp và .h)

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    2

    theo như e hiểu thì, C++ kế thừa từ C, gần như là tất cả,
    có điều C++ cải tiến hơn nhiều
    nhưng e vẫn thắc mắc là:
    C++ là kế thừa những cái j cơ bản nhất của C
    chỉ là những mục to để e tóm gọn lại kiến thức thui,
    tại vì e chỉ hiểu sơ sơ thui, không chuyên sâu đâu ạ

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định C++ có những phát triển cơ bản nào dựa trên cơ sở C

    Hiểu vậy đủ rồi. Muốn hiểu chỗ còn lại phải thực tập nhiều. Không có ai lên chức sư mà không qua công khổ luyện cả.

  7. #7
    Ngày gia nhập
    03 2009
    Bài viết
    45

    MÌnh muốn hình dung rõ hơn về tác dụng của các ngôn ngữ lập trình ứng dụng như C, C++... Cho mình hỏi: theo mình dc học, ta có 1 mô hình 3 chân: web server, database server và web browser. Kết nối các thành phần của mô hình đấy là các ngôn ngữ lập trình web middleware (PHP, ASP, JSP...), chúng dc đọc bởi các web browser, gửi yêu cầu tới web server, và kết nối các thông tin của database server. Vậy các ngôn ngữ lập trình ứng dụng nằm ở đâu trong mô hình trên?

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi Mingyu Xem bài viết
    MÌnh muốn hình dung rõ hơn về tác dụng của các ngôn ngữ lập trình ứng dụng như C, C++... Cho mình hỏi: theo mình dc học, ta có 1 mô hình 3 chân: web server, database server và web browser. Kết nối các thành phần của mô hình đấy là các ngôn ngữ lập trình web middleware (PHP, ASP, JSP...), chúng dc đọc bởi các web browser, gửi yêu cầu tới web server, và kết nối các thông tin của database server. Vậy các ngôn ngữ lập trình ứng dụng nằm ở đâu trong mô hình trên?
    Mở riêng bài khác mà hỏi. Tự dưng đèo lên bài của người khác là bất lịch sự.

Các đề tài tương tự

  1. Hà Nội Lập trình viên phát triển ứng dụng trên thiết bị di động
    Gửi bởi thonv trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 0
    Bài viết cuối: 21-11-2012, 10:45 AM
  2. Vàng trên 47 triệu, USD neo giá cao
    Gửi bởi quynhcute trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 20-09-2012, 12:18 PM
  3. Phát triển nhúng trên nền QNX tại Việt nam
    Gửi bởi QNX_Vietnam trong diễn đàn Giải trí - Thư giãn
    Trả lời: 0
    Bài viết cuối: 11-09-2012, 03:30 PM
  4. Bạn có muốn mức lương khởi đầu phải là trên 5 triệu???
    Gửi bởi christianle trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 02:39 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn