Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 25 kết quả

Đề tài: Tại sao có struct rồi còn sinh ra class. Lợi thế của class là gì?

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

    Mặc định Tại sao có struct rồi còn sinh ra class. Lợi thế của class là gì?

    Đúng như title , em muốn hiểu kỹ hơn sự khác biệt giữa struct và class , mong ae chỉ điểm .

    Em đã search trên 4rum nhưng ko thấy ! Thanks

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    struct là một class đặc biệt, các thành viên của nó đều là public
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Quan trọng là struct thì không thể OOP như là class.
    Cánh Chym ứ mỏi

  4. #4
    Ngày gia nhập
    06 2008
    Bài viết
    25

    Struct là 1 loại kiểu dữ liệu có tác dụng gom các thằng kiểu dữ liệu khác vào trong 1 cục cho dễ xử.
    Còn class ko đơn giản như vậy, thường thì class sẽ hide hết các dữ liệu bên trong, chỉ chừa cái interface ở ngoài, nên xài class thì đếch cần biết bên trong nó là cí rì. Class có mấy cái như method, inheritance, polymophism... nói chung là OOP, struct hông có mấy cái này (thật ra trong C++ bây giờ hình như cũng struct cũng có method này nọ là do nó bắt chước class chứ nguyên căn là hông có).

    Ngôn ngữ như Java, C# toàn là đối tượng, function là method của class hết. Ko có class là ko có gì hết

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Lâu lắm rồi mới thấy được câu hỏi hay như vầy!

    Class chính là Struct.

    Thậm chí vẫn có thể code được cả inheritance, polymorphism trên struct. (dĩ nhiên là không dùng từ khóa public của C++)

    Vẫn chưa có ai trả lời thuyết phục câu này cả.
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 22-10-2008 lúc 08:06 AM.

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Tại sao có struct rồi còn sinh ra class. Lợi thế của class là gì?

    Thì class và struct đều như nhau chỉ khác là struct thì luôn public mọi thứ, class thì có thêm private, protected.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    struct nhẹ hơn class đó , nếu không yêu cầu gì nhiều thì nên dùng struct ở những chỗ không cần rờ tới class với chương trình lớn
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  8. #8
    Ngày gia nhập
    06 2008
    Bài viết
    25

    Trích dẫn Nguyên bản được gửi bởi ZCoder87 Xem bài viết
    Lâu lắm rồi mới thấy được câu hỏi hay như vầy!
    Class chính là Struct.
    Thậm chí vẫn có thể code được cả inheritance, polymorphism trên struct. (dĩ nhiên là không dùng từ khóa public của C++)

    Vẫn chưa có ai trả lời thuyết phục câu này cả.
    Mình bảo rồi, nguyên căn struct là 1 cục gom dữ liệu thôi, mà chính xác hơn là trong C. Đến C++ thì có class và mấy cái tính năng mới như method hay inheritance, polymorphism thì struct dc thể ăn theo nên mới có những cái này. Cho nên trong C++ thì struct và class chỉ khác nhau ở chỗ như bác mèo nói là class có private, protected.
    Thật ra chẳng ai dùng struct để làm 3 cái chuyện inheritance, polymorphism cả, cho nên nói struct thì ta nên hiểu là struct trong C. Class dc coi là bản nâng cấp struct.


    http://en.wikipedia.org/wiki/C%2B%2B...es_and_classes

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Internal của STL function object đều là struct.
    - Cơ bản khác nhau thì chỉ như mèo nói, còn về template và generic thì còn khác nhiều nữa, có những chỗ bắt buộc dùng struct và có những chỗ bắt buộc dùng class.
    - Ví dụ 1 function object là cái mà C++ programmer phải viết hằng ngày và tất cả đều là struct
    C++ Code:
    1. #include <iterator>
    2. #include <iostream>
    3. #include <algorithm>
    4. #include <functional>
    5. #include <vector>
    6. #include <cmath>
    7.  
    8. template< typename T1, typename T2 >
    9. struct fopow : public std::binary_function< T1, T2, T1 > {
    10.     T1 operator()( T1 bse, T2 exp ) const {
    11.         return std::pow( bse, exp );
    12.     }
    13. };
    14.  
    15. int main() {
    16.     std::vector< int > v;
    17.     for( int o = 1; o <= 9; ++o ) {
    18.         v.push_back( o );
    19.     }
    20.  
    21.     std::transform( v.begin(), v.end(),
    22.                     std::ostream_iterator< float >( std::cout, " " ),
    23.                     bind2nd( fopow< float, int >(), 3 )
    24.     );
    25.  
    26.     return 0;
    27. }
    Đã được chỉnh sửa lần cuối bởi rox_rook : 22-10-2008 lúc 10:11 AM.

  10. #10
    Ngày gia nhập
    07 2007
    Nơi ở
    TP.HCM
    Bài viết
    199

    Trích dẫn Nguyên bản được gửi bởi ZCoder87 Xem bài viết
    Lâu lắm rồi mới thấy được câu hỏi hay như vầy!

    Class chính là Struct.

    Thậm chí vẫn có thể code được cả inheritance, polymorphism trên struct. (dĩ nhiên là không dùng từ khóa public của C++)

    Vẫn chưa có ai trả lời thuyết phục câu này cả.
    Vậy bạn trả lời đi.
    Theo mình thì struct thì hướng cấu trúc, class thì hướng đối tượng

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

  1. phân biệt cách sử dụng class và struct
    Gửi bởi phammai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 06-08-2015, 11:31 PM
  2. Sinh ra class trong c# thế nào?
    Gửi bởi kenkentrang trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 24-10-2013, 04:47 PM
  3. Khai báo một struct trong 1 class như thế nào?
    Gửi bởi hoanglamth1 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 1
    Bài viết cuối: 22-11-2011, 10:42 AM
  4. Lỗi: error C2440: 'initializing' : cannot convert from 'class xxx *' to 'class xxx *' sửa như thế nào?
    Gửi bởi Nupakachy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 16-06-2011, 08:54 PM
  5. cài đặt class Tam Giac kế thừa class Diem, như thế nào?
    Gửi bởi be_sau trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 19-10-2010, 03:52 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