Điểm giống nhau giữa class và struct?

struct sv{
     int a;
     float b;
};
//////////////
class sv{
     int a;
     float b;
     //constructor
     //phương thức
}

như mọi người biết khi ta viết như struct như trên là ta đang định nghĩa 1 kiểu dữ liệu mới/đối tượng việc làm như vậy OS sẽ ko cấp phát vùng nhớ vậy class có giống struct ở điểm này ko nhỉ việc ta tạo 1 class mà ko dùng đến cũng giống như ta đang định nghĩa 1 đối tượng ?

trong C++ class giống hệt struct, chỉ khác là các phương thức/thuộc tính của class mặc định là private, trong khi struct thì mặc định các phương thức/thuộc tính là public.

2 Likes

class nói chung luôn hả bạn ko riêng gì C++ ?

chỉ riêng C++ thôi. struct với class trong C# khác, C thì ko có class, Java thì ko có struct…

à ngoài ra kế thừa từ base struct mặc định là public inheritance, còn kế thừa từ base class thì mặc định là private inheritance, nhưng chủ yếu ai cũng muốn kế thừa public nên fuck retarded C++ class default inheritance.

2 Likes

tóm lại class cũng là định nghĩa 1 đối tượng như struct thôi đúng ko bạn mấy cái kia thì mình sẽ tìm hiểu từ từ

C++ struct định nghĩa 1 đối tượng như C++ class, nói ngược như vậy cho nó khỏi nhầm với C struct. ĐỪNG lầm C++ struct với C struct, 2 cái khác nhau.

2 Likes

thực ra mình học xong C mới qua C++ và học trên nền VS nên struct cũng có thể khai báo constructor hay phương thức nếu mình học qua 1 IDE thuần C thì nó ko cho đúng ko nhỉ ?

đúng, vì C++ struct nó khác C struct. C++ struct có nhiều chức năng hơn, hay có chức năng giống 1 class, mà C thì ko có class, nên thuần C nó sẽ ko nhận nếu C++ struct này có khai báo mấy phương thức của class như ctor, dtor, method, v.v…

nói trong C++ class giống struct thì dễ bị hiểu nhầm giống C struct, nói ngược lại struct trong C++ giống class thì sẽ ko bị lầm vì C đâu có class đâu mà “struct giống class”.

3 Likes

cho mình hỏi thêm là lúc mình định nghĩa thì nó ko có cấp phát vùng nhớ gì đâu đúng ko nhỉ ? chỉ là mình đang định nghĩa đối tượng đó chứ đâu có tạo 1 đối tượng gì đâu.cái này mấy ngôn ngữ khác cũng như thế đúng ko nhỉ ?

class là kiểu tham chiếu .struct là kiểu tham trị
và struct thì nhanh hơn class
hai loại được lưu ở hai vùng nhớ khác nhau (mình ko nhớ tên)
class hỗ trợ đa khế thừa struct thì không

cái này là C# mà, chủ thớt tag C++, học X lộn sang Y coi chừng em nó tẩu hỏa nhâp ma =)

@_@

4 Likes

mình đoán mò đấy là khái niệm chung bạn nhỉ

1 Like

ko, C++ khác, C++ struct/class object muốn nó nằm trên stack thì nó nằm trên stack, muốn nó nằm trên heap thì nó nằm trên heap, ko phải như ông C# copy Java nằm trên heap hết rồi bị rên đòi tạo object nằm trên stack phải ngược dòng tạo cái “struct” nằm trên stack @_@ Đa kế thừa thì C++ struct class gì chơi tất, struct chỉ là cái tên khác của class với default public thôi.

giờ bàn mới thấy chữ struct trong các ngôn ngữ loạn hết cả lên =)

http://en.cppreference.com/w/cpp/language/class
class-key - one of class or struct. The keywords are identical except for the default member access and the default base class access.

https://docs.microsoft.com/en-us/cpp/cpp/struct-cpp
In C++, a structure is the same as a class except that its members are public by default.

2 Likes

về mặt ý nghĩa class nó là cái khuôn để tạo ra đối tượng đóng gói dữ liệu và cách thức xử lý dữ liệu đó lại , loại bỏ biến toàn cục chương trình là sự giao tiếp giữa các đối tượng …

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?