01/10/2018, 15:21
Đ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 ?
Bài liên quan
trong C++
class
giống hệtstruct
, chỉ khác là các phương thức/thuộc tính củaclass
mặc định làprivate
, trong khistruct
thì mặc định các phương thức/thuộc tính làpublic
.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ừ baseclass
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.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.
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”.
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 =)
ừ @_@
mình đoán mò đấy là khái niệm chung bạn nhỉ
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 =)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 …