Sự khác biệt giữa cấu trúc và lớp trong c ++ ở dạng bảng

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

  1. Biểu đồ so sánh
  2. Sự định nghĩa
  3. Sự khác biệt chính
  4. Điểm tương đồng
  5. 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

  1. 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ư
  2. 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
  3. 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
  4. 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
  5. Để 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ó
  6. 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

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

Cấu trúc là một nhóm các biến thuộc nhiều kiểu dữ liệu khác nhau được tham chiếu bởi cùng một tên. Trong C++, một lớp được định nghĩa là một tập hợp các biến và hàm có liên quan với nhau chứa trong một cấu trúc duy nhất .

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

Cấu trúc và lớp khác nhau ở các chi tiết sau. Cấu trúc là các loại giá trị; . Biến của kiểu cấu trúc chứa dữ liệu của cấu trúc, thay vì chứa tham chiếu đến dữ liệu như kiểu lớp. Cấu trúc sử dụng cấp phát ngăn xếp; . . A variable of a structure type contains the structure's data, rather than containing a reference to the data as a class type does. Structures use stack allocation; classes use heap allocation.

Sự khác biệt duy nhất giữa một cấu trúc và một lớp là gì?

Sự khác biệt duy nhất giữa cấu trúc và lớp trong C++ là khả năng truy cập mặc định của các biến thành viên và phương thức . Trong một cấu trúc, chúng là công khai; .

sự khác biệt giữa lớp và cấu trúc giải thích bằng cách đưa ra ví dụ là gì?

Lớp được sử dụng trong các chương trình nhỏ, trong khi cấu trúc được sử dụng trong các chương trình lớn . Trong cấu trúc, tất cả các loại giá trị được phân bổ trên ngăn xếp, trong khi trong lớp, tất cả các loại giá trị được phân bổ trên heap. Các thể hiện của 'cấu trúc' được gọi là 'biến cấu trúc' trong khi các thể hiện của 'lớp' được gọi là 'đối tượng'.