Bảng dưới đây cho thấy sự khác biệt giữa cấu trúc và lớp trong C++. Trong bảng này, sự khác biệt giữa cấu trúc và lớp trong C++ dựa trên từ khóa được sử dụng để xác định, theo mặc định, thành viên dữ liệu, bảo mật, v.v. Đây là một chủ đề thiết yếu của giáo trình GATE CSE.
Sự khác biệt chính giữa cấu trúc và lớp trong C ++
Kết cấu
Lớp
Thành viên dữ liệu của lớp được mặc định là công khai
Thành viên dữ liệu của lớp là riêng tư theo mặc định.
Cấu trúc được xác định bằng cách sử dụng từ khóa 'struct'.
Từ khóa ‘class’ được sử dụng để định nghĩa lớp trong C.
Cấu trúc này được sử dụng trong các chương trình nhỏ như lưu trữ năm điểm môn học của học sinh.
Lớp được sử dụng trong chương trình lớn như khái niệm kế thừa, đa hình và OOP.
Cấu trúc không thể kế thừa.
Lớp có thể được kế thừa.
Cấu trúc là tập hợp các thành viên dữ liệu [biến].
Lớp là tập hợp các hàm thành viên và thành viên dữ liệu.
Cấu trúc không cung cấp bảo mật
Lớp cung cấp bảo mật cao.
Lớp trong C++ là gì?
Trước khi biết sự khác biệt giữa cấu trúc và lớp trong C++, chúng ta hãy tìm hiểu về lớp trong C++. Một lớp trong C++ đại diện cho nhóm các đối tượng tương tự chứa thành viên dữ liệu riêng và chức năng thành viên cùng nhau
Cú pháp của lớp trong C++ như sau
lớp Tên_lớp
{
Công cụ sửa đổi truy cập;
Thành viên dữ liệu;
Hàm thành viên[]
{
//thân hình
}
};
Công cụ sửa đổi truy cập có ba loại như sau
- Riêng tư. Các thành viên private chỉ có thể được truy cập từ bên trong lớp
- Công cộng. Các thành viên public có thể được truy cập từ bên trong cũng như bên ngoài lớp
- được bảo vệ. Các thành viên được bảo vệ có thể được truy cập từ bên trong cũng như bên ngoài lớp với sự trợ giúp của chức năng bạn bè
Cấu trúc là gì?
Trước khi biết sự khác biệt giữa cấu trúc và lớp trong C++, chúng ta hãy tìm hiểu về cấu trúc. Cấu trúc là kiểu dữ liệu do người dùng định nghĩa cho phép bạn kết hợp các mục dữ liệu thuộc các loại khác nhau. Một cấu trúc trong C++ là một nhóm các thành phần dữ liệu được nhóm lại với nhau dưới một tên. Các thành phần dữ liệu này, được gọi là thành viên, có thể có các loại và độ dài khác nhau
Cấu trúc là cách để nhóm các biến. Cấu trúc trong C++ chứa hai loại thành viên như sau
Hơn nữa, tính đa hình và tính kế thừa không được cấu trúc hỗ trợ, nhưng các lớp hỗ trợ tính đa hình và tính kế thừa. Hãy nghiên cứu sự khác biệt giữa cấu trúc và lớp bằng cách sử dụng biểu đồ so sánh
Nội dung. Cấu trúc Vs lớp
- Biểu đồ so sánh
- Sự định nghĩa
- Sự khác biệt chính
- Điểm tương đồng
- Sự kết luận
Biểu đồ so sánh
Cơ sở để so sánhStructureClassBasicNếu thông số truy cập không được khai báo, theo mặc định, tất cả thành viên đều là 'công khai'. Nếu mã xác định quyền truy cập không được khai báo, theo mặc định, tất cả các thành viên đều ở chế độ 'riêng tư'. Tên khai báo cấu_trúc{nhập struct_element 1;
nhập struct_element 2;
nhập struct_element 3;
.
};tên_lớp{
thành viên dữ liệu;
hàm thành viên;
};InstanceInstance . Thể hiện của một 'lớp' được gọi là 'đối tượng'. Đa hình và kế thừaKhông được hỗ trợHỗ trợ đa hình và một lớp cũng có thể được kế thừa. NatureValue typeReference typeMemory được phân bổ onStackHeapNull valuesKhông thểCó thể có giá trị nullYêu cầu hàm tạo và hàm hủyKhôngCó
Định nghĩa cấu trúc
Một cấu trúc là một tập hợp các biến có kiểu dữ liệu khác nhau, tất cả được tham chiếu bởi một tên. Một khai báo cấu trúc tạo thành một mẫu được sử dụng để tạo một thể hiện của cấu trúc
cú pháp
Cấu trúc được khai báo như sau
struct sname { type struct_element1; type struct_element2; type struct_element3; . . . } variable1, variable2, . . .;
Từ khóa 'struct' định nghĩa cho trình biên dịch rằng một cấu trúc đang được khai báo. 'sname' đại diện cho tên được đặt cho cấu trúc. Khai báo cấu trúc luôn được kết thúc bằng dấu chấm phẩy vì nó được coi như một câu lệnh
Bạn có thể khai báo các thể hiện của cấu trúc trước khi nó kết thúc như được thực hiện trong đoạn mã trên [biến1, biến2] hoặc bạn có thể khai báo thể hiện của cấu trúc trong hàm main[], bằng cách viết tên thể hiện trước tên của cấu trúc
Thí dụ
main[]{ sname S1, S2; }
Ở đây S1 và S2 là các thể hiện của cấu trúc. Các thể hiện của cấu trúc được gọi là “biến cấu trúc”
Làm thế nào để truy cập một cấu trúc?
Phần tử được khai báo bên trong thân cấu trúc có thể được truy cập thông qua các biến cấu trúc thông qua việc sử dụng dấu chấm [. ] nhà điều hành
//example S1.struct_element1;
- Mảng cấu trúc cũng có thể được tạo ra;
//sample struct sname sarray[10];
Câu lệnh trên tạo một mảng có tên 'sarray' chứa mười biến và mỗi biến được tổ chức như được định nghĩa trong 'sname'
- Bạn có thể chuyển một thành viên cấu trúc cho một hàm và bạn có thể chuyển toàn bộ cấu trúc cho một hàm
- Giống như, con trỏ nguyên, con trỏ mảng, con trỏ cấu trúc cũng có thể được khai báo bằng cách đặt '*' ở phía trước tên biến cấu trúc
//sample struct sname *S1;
Ghi chú
Các phần tử 'cấu trúc' được lưu trữ trong một vị trí bộ nhớ liền kề
định nghĩa của lớp
Lớp trong OOP định nghĩa một loại mới chứa các thành viên dữ liệu và hàm thành viên, được sử dụng để truy cập các thành viên dữ liệu của lớp. Các thể hiện của các lớp được gọi là "đối tượng", mỗi đối tượng có cùng tổ chức với một lớp. Lớp là một trừu tượng logic, trong khi một đối tượng có sự tồn tại vật lý
cú pháp
Lớp tương tự về mặt cú pháp với cấu trúc. Lớp có thể được khai báo như sau
class class_name { private data members and member functions. access_specifier type data_member; type mem_funct[parameter list]{ . . } } object list;
Ở đây, lớp là một từ khóa khai báo cho trình biên dịch rằng một lớp đã được khai báo. Tính năng chính của OOP là ẩn dữ liệu được thực hiện bằng cách cung cấp ba chỉ định truy cập là “công khai”, “riêng tư”, “được bảo vệ”. Nếu bạn không chỉ định bất kỳ bộ xác định quyền truy cập nào trong lớp khi khai báo các thành viên dữ liệu hoặc hàm thành viên, thì theo mặc định, tất cả đều được coi là riêng tư
Công cụ xác định quyền truy cập công khai cho phép, chức năng hoặc dữ liệu được truy cập bởi các phần khác trong chương trình của bạn. Các thành viên private của lớp chỉ có thể được truy cập bởi một thành viên của lớp đó mà thôi. Trình xác định quyền truy cập được bảo vệ được áp dụng trong quá trình kế thừa. Khi bạn đã khai báo bộ xác định quyền truy cập, nó không thể thay đổi trong suốt chương trình
Làm thế nào để truy cập một đối tượng?
Các đối tượng không là gì ngoài thể hiện của các lớp. Các thành viên của lớp được truy cập bởi đối tượng của cùng một lớp bằng cách sử dụng dấu chấm [. ] nhà điều hành
//object.mem_funct[arguments];
- Đối tượng cũng có thể được truyền dưới dạng đối số cho hàm
- Con trỏ tới một đối tượng cũng có thể được tạo
Sự khác biệt chính giữa cấu trúc và lớp
- Sự khác biệt chính giữa cấu trúc và lớp là theo mặc định, tất cả thành viên của cấu trúc là công khai. Ngược lại, theo mặc định, tất cả các thành viên của lớp là riêng tư
- Một cấu trúc được coi là loại giá trị trong khi đó, một lớp là một loại tham chiếu
- Tại thời điểm khởi tạo một cấu trúc, bộ nhớ được cấp phát trên một ngăn xếp. Ngược lại, trong lớp, bộ nhớ được phân bổ trên đống
- Không thành viên cấu trúc nào có thể có giá trị null. Ngược lại, các biến của một lớp có thể có giá trị null
- Để khởi tạo thành viên của một lớp, các hàm tạo và hàm hủy được sử dụng. Ngược lại, cấu trúc có thể tự động khởi tạo các thành viên của nó
- Trong các biến trong cấu trúc không thể được khởi tạo trong khi khai báo trong khi trong trường hợp của lớp, điều này có thể được thực hiện
Điểm tương đồng
- Trong C++, cả cấu trúc và lớp đều tương đương về mặt cú pháp
- Cả cấu trúc và lớp đều có thể khai báo một số thành viên của chúng là private
- Tên của một cấu trúc hoặc lớp có thể được sử dụng như một loại độc lập
Sự kết luận
Cấu trúc trong C có một số hạn chế như cấu trúc không cho phép ẩn dữ liệu, kiểu dữ liệu 'struct' không thể được xử lý như các kiểu dựng sẵn; . Cấu trúc trong C++ đã khắc phục được những hạn chế này
Trong C++, các lớp là phiên bản mở rộng của cấu trúc. Lập trình viên thấy dễ dàng sử dụng lớp để chứa dữ liệu và chức năng và cấu trúc chỉ để chứa dữ liệu