Verschil tussen structuur en klasse

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 5 Kunnen 2024
Anonim
What Is The Difference Between struct And class In C++?
Video: What Is The Difference Between struct And class In C++?

Inhoud


Zowel een structuur als een klasse bieden een manier om een ​​aangepast gegevenstype te maken dat verder kan worden gebruikt om instanties te maken. C ++ breidt de rol van structuur uit om een ​​klasse te maken. Zowel structuur als klasse zijn in alle opzichten vergelijkbaar, behalve één verschil dat, structuur standaard al zijn leden als “openbaar” heeft, en klasse standaard al zijn leden “privé” heeft. Laten we het verschil tussen structuur en klasse bestuderen met behulp van een vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. overeenkomsten
  5. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingStructuurKlasse
basis- Als de toegangsspecificatie niet wordt aangegeven, zijn alle leden standaard openbaar.Als de toegangsspecificatie niet wordt aangegeven, zijn alle leden standaard privé.
Verklaring struct structuurnaam {
type struct_element 1;
type struct_element 2;
type struct_element 3;
.
.
.
};
class class_name {
data lid;
lid functie;
};
Voorbeeld Het exemplaar van structuur wordt structuurvariabele genoemd.Exemplaar van een klasse wordt object genoemd.


Definitie van structuur

Een structuur is een verzameling variabelen van ongelijke gegevenstypen, die allemaal met één naam worden aangeduid. Een structuurdeclaratie vormt een sjabloon die wordt gebruikt om een ​​instantie van de structuur te maken. De structuur wordt als volgt verklaard.

struct sname {type struct_element1; type struct_element2; type struct_element3; . . . } variabele1, variabele2,. . .;

Het trefwoord ‘struct’ definieert aan de compiler dat een structuur wordt gedeclareerd. De ‘sname’ staat voor de naam die aan de structuur is gegeven. De structuurdeclaratie wordt altijd beëindigd door een puntkomma, omdat deze als een instructie wordt beschouwd. U kunt de instanties van de structuur declareren vóór de beëindiging ervan zoals gedaan in bovenstaande code (variabele1, variabele2) of u kunt de instantie van structuur in main () aangeven door de instantienaam te schrijven die wordt voorafgegaan door de naam van de structuur.


// voorbeeld. main () {sname S1, S2; }

Hier zijn S1 en S2 de instanties van de structuur. De instanties van de structuur worden "structuurvariabele" genoemd. Het element dat in het hoofdgedeelte van de structuur wordt aangegeven, is toegankelijk via de structuurvariabelen met de operator dot (.).

// voorbeeld S1. struct_element1;

  • De matrixstructuur kan ook worden gemaakt, hiervoor moet u eerst een structuur declareren en vervolgens een matrix van dat type declareren.

// sample struct sname sarray;

Bovenstaande instructie maakt een array met de naam ‘sarray’ met tien variabelen en elke variabele is georganiseerd zoals gedefinieerd in ‘sname’.

  • U kunt een structuurlid aan een functie doorgeven en u kunt een hele structuur aan een functie doorgeven.
  • Zoals, integer pointer, array pointer, een structuur pointer kan ook worden gedeclareerd door ‘*’ voor de naam van structuurvariabelen te plaatsen.

// sample struct sname * S1;

Opmerking:

De 'structuur'-elementen worden opgeslagen op een aaneengesloten geheugenlocatie.

Definitie van klasse

Klasse in OOP definieert een nieuw type dat gegevensleden en ledenfunctie bevat, die worden gebruikt om toegang te krijgen tot de gegevensleden van de klasse. De instanties van klassen worden "objecten" genoemd, die elk dezelfde organisatie hebben als een klasse. De klasse is een logische abstractie, terwijl een object een fysiek bestaan ​​heeft. De klasse is syntactisch vergelijkbaar met de structuur. De klasse kan als volgt worden verklaard.

class class_name {private data leden en lidfuncties. access_specifier type data_member; type mem_funct (parameterlijst) {. . }} objectlijst;

Hier is de klasse een trefwoord dat aan de compiler aangeeft dat een klasse is gedeclareerd. Het belangrijkste kenmerk van OOP is het verbergen van gegevens, wat wordt bereikt door drie toegangsspecificaties te bieden die "openbaar", "privé", "beschermd" zijn. Als u geen toegangsspecificatie in de klasse opgeeft terwijl u gegevensleden of lidfuncties declareert, worden ze standaard allemaal als privé beschouwd. Met de openbare toegangsspecificatie kunnen andere functies van uw programma toegang krijgen tot functies of gegevens. De privéleden van de klas zijn alleen toegankelijk voor een lid van die klas. De beveiligde toegangsspecificatie wordt toegepast tijdens overname. Nadat u de toegangsspecificatie hebt aangegeven, kan deze niet door het hele programma worden gewijzigd.

De objecten zijn niets anders dan de instantie van de klassen. De leden van de klasse worden benaderd door het object van dezelfde klasse met behulp van een punt (.) Operator.

//object.mem_funct (argumenten);

  • Het object kan ook worden doorgegeven als argument aan een functie.
  • De aanwijzer naar een object kan ook worden gemaakt.
  1. Het belangrijkste verschil tussen structuren en klassen is dat standaard alle leden van de structuur openbaar zijn, terwijl standaard alle leden van de klasse privé zijn.

overeenkomsten:

  • In C ++ zijn zowel de structuur als de klasse syntactisch equivalent.
  • Zowel structuur als klasse kunnen sommige van hun leden privé verklaren.
  • De naam van een structuur of klasse kan als een op zichzelf staand type worden gebruikt.
  • Zowel structuur als een klasse ondersteunen het mechanisme van overerving.

Gevolgtrekking:

De structuur in C had een deel van de beperking, omdat de structuur het verbergen van gegevens niet toestaat, kon het ‘struct’ datatype niet worden behandeld als ingebouwde typen, structuren ondersteunen geen overerving. Structuur in C ++ heeft deze beperkingen overwonnen. In C ++ zijn klassen de uitgebreide versie van de structuur. De programmeur vindt het gemakkelijk om de klasse te gebruiken om gegevens te bewaren en beide te gebruiken en alleen structuur om gegevens te bewaren.