Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa cấu trúc và lớp

Cả cấu trúc và lớp cung cấp một cách để tạo một kiểu dữ liệu tùy chỉnh có thể được sử dụng thêm để tạo các thể hiện. C ++ mở rộng vai trò của cấu trúc để tạo ra một lớp. Cả cấu trúc và lớp, đều giống nhau về mọi mặt ngoại trừ một điểm khác biệt là, cấu trúc theo mặc định có tất cả thành viên của nó là công khai, và lớp mặc định có tất cả thành viên của nó. 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.

Biểu đồ so sánh

Cơ sở để so sánhKết cấuLớp học
Căn bảnNếu chỉ định truy cập không được khai báo, theo mặc định tất cả các thành viên là 'công khai'.Nếu chỉ định truy cập không được khai báo, theo mặc định, tất cả các thành viên là 'riêng tư'.
Tờ khaistruct struct_name {
gõ struct_element 1;
gõ struct_element 2;
gõ struct_element 3;
.
.
.
};
lớp class_name {
thành viên dữ liệu;
chức năng thành viên;
};
Sơ thẩmSơ thẩm của 'cấu trúc' được gọi là 'biến cấu trúc'.Sơ thẩm của một 'lớp' được gọi là 'đối tượng'.

Đị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ủa cá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 khuôn mẫu được sử dụng để tạo một thể hiện của cấu trúc. Cấu trúc được khai báo như sau.

 struct sname {loại struct_element1; gõ struct_element2; gõ struct_element3; . . . } biến1, biến2, . . .; 

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 chấm dứt bởi dấu chấm phẩy, vì nó được coi là một tuyên bố. Bạn có thể khai báo các thể hiện của cấu trúc trước khi kết thúc nó 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 main (), bằng cách viết tên thể hiện trước tên của cấu trúc.

 // thí dụ. chính () {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 có thể biến đổi. Phần tử được khai báo bên trong phần thân của 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 toán tử dot (.).

 // ví dụ S1. struct_element1; 
  • Mảng cấu trúc cũng có thể được tạo, vì điều này, trước tiên bạn cần khai báo một cấu trúc và sau đó, khai báo một mảng kiểu đó.
 // mẫu struct sname sarray [10]; 

Câu lệnh trên tạo ra một mảng với 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ể truyền một thành viên cấu trúc cho một hàm và bạn có thể truyền toàn bộ cấu trúc cho một hàm.
  • Giống như, con trỏ số 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.
 // mẫu cấu trúc sname * S1; 

Chú thí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 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à các đối tượng trên mạng, mỗi đối tượng có cùng một tổ chức với một lớp. Lớp này là một sự trừu tượng logic, trong khi đó, một đối tượng có sự tồn tại vật lý. Lớp này có cấu trúc tương tự như cấu trúc. Các lớp có thể được khai báo như sau.

 class class_name {thành viên dữ liệu riêng tư và các hàm thành viên. access_specifier loại data_member; gõ mem_func (danh sách tham số) {. . }} danh sách đối tượng; 

Ở đâ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 công cụ truy cập đó là công cộng, một phần mềm riêng tư, được bảo vệ. Nếu bạn không chỉ định bất kỳ trình xác định truy cập nào trong lớp trong khi khai báo các thành viên dữ liệu hoặc các hàm thành viên, theo mặc định tất cả được coi là riêng tư. Trình xác định truy cập công cộng cho phép, các 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 riêng 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 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 truy cập, nó không thể thay đổi trong suốt chương trình.

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 toán tử dấu chấm (.).

 //object.mem_func (đối số); 
  • Đố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

  1. Sự khác biệt chính giữa các cấu trúc và các lớp là theo mặc định tất cả các thành viên của cấu trúc là công khai trong khi, theo mặc định, tất cả các thành viên của lớp là riêng tư.

Đ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 có thể tuyên bố một số thành viên của họ là riêng tư.
  • 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.
  • Cả cấu trúc và một lớp đều hỗ trợ cơ chế kế thừa.

Phần kết luận:

Cấu trúc trong C có một số hạn chế do 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ác cấu trúc không hỗ trợ kế thừa. Cấu trúc trong C ++ đã khắc phụ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à cả chức năng và cấu trúc chỉ để giữ dữ liệu.

Top