Разлика између класе и структуре

Пре него што схватимо разлику између класе и структуре, требало би да знамо неколико основних концепата повезаних са њима. Без разумевања појмова, тешко је схватити разлике између њих два.

Шта је класа и објект:

Ово су два важна концепта везана за објектно оријентисано програмирање и они чине основу за уоквиривање функција и преноса података на друге функције. За боље разумевање, то можемо повезати са примером из стварног живота. Класа се може сматрати продавницом, а Предмет може бити било која појединачна, специфична продавница, као што су намирнице, прибор за јело, воће, итд. Сви предмети имају заједничка својства главне класе - продавнице -, а заузврат, предмети могу имати своја ексклузивна својства као што су специфичан дизајн, осветљење итд. Кроз објекте ми заправо можемо користити класу; они формирају примерке класе.

Синтакса класе

Класа продавница

јавне жице;

дизајн јавних жица;

Синтакса објекта

Сторе продавница = нова продавница ();

Сторе Статионери = нова продавница ();

Шта је структура?

Структура укључује само податке и зато је корисно уоквиривати појединачне потребе за подацима преко објеката Струцт. За разлику од класе, она нема функције. Ево његове синтаксе:

струцт гроцери_ентранце

цхар ентри_наме [50];

инт ентри_сизе;

трговина прехрамбених производа;

Све продавнице могу користити Струцт 'улаз' са појединачним именима и величинама.

Шта је наследство?

То је слично начину на који син наслеђује имовину свог оца, а заузврат, син може додати и неке друге ствари. Класа може бити или основна класа или изведена класа, у којој се прва може узети као база ради формирања друге. Изведена класа додаје мало других својстава за себе, осим онога што добија из основне класе. Када размотримо горњи пример, трговина прехрамбених производа и даље може бити изведена у одређену продавницу, као што је КСИЗ продавница..

Сада када смо упознати са основним концептима, можемо ући у стварну разлику између Класе и Структуре.

Како се разликују?

  • Поновна употреба: Како класе чине основни оквир, оне се могу поново користити; Структуре су, међутим, појединачни елементи са специфичним својствима, па их није могуће поново користити. На пример, Класа прехрамбених производа може се користити за било коју врсту намирница, али Струцт трговина прехрамбених производа специфична је само за то и нема смисла да је поново користите у другим класама.
  • Видљивост: Све функције класе су јавно доступне његовим објектима. На пример, у класи „продавница“ имамо функцију која се зове „ствари“. Функција "ствари" видљива је свим објектима, као што су "трговина прехрамбеним производима", "продаваоница конфекције" итд. Таква видљивост није могућа код структура јер су подаци структуре ограничени на себе и нису видљиви осталим структурама. Да ствари буду јасне, можемо рећи да подаци „гроцери_ентранце“ нису јавно видљиви у свим осталим продавницама.
  • Прођи референцом и прођи по вредности: Пасс би Референце шаље функцијама само меморијску локацију, а не и стварне податке. То значи да кад год се вредност промени, промена се одражава на одговарајуће функције. Пасс би валуе, заузврат, само шаље вредност у функцију. У овом случају, промена вредности након што је послана неће се одразити на функцију. Класа користи пролаз по референци, а Струцт користи вриједност пролаза.
  • Наслеђивање: Класе се могу даље наследити тако да формирају подкласе, али Структуре не могу да искористе наследство. На пример, Класа Сторе своје функције даје подкласи „трговина живежним намирницама“. Али Струцт 'гроцери_ентранце' не може наслиједити ниједну функцију. Можемо рећи да овде не постоји концепт као подструктура.
  • Подразумевана видљивост: Сви чланови Класе задано су приватни субјекти, док се чланови Структуре задано задрже као јавни субјекти.
  • Величина празне класе и структуре: Класа користи величину од 1 бајта чак и кад је празна, док Струцт никада не користи ниједну меморију када је празна. То значи да можемо рећи да је величина празне структуре једнака 0 бајту.
  • Отпад: Сакупљање смећа могуће је у разредима, јер они користе пропусне референце. Стога је лакше извршити чишћење на једној локацији где се подаци чувају. Са друге стране, са Струцтом није могуће сакупљање смећа, јер користи пролазне вредности и подаци су раштркани на различитим локацијама.
  • Управљање меморијом: Будући да класа омогућава прикупљање смећа, ефикасно је и управљање меморијом; међутим, није толико ефикасно са Структурама.
  • Конструктор: Конструктор генерално иницијализира класу са одређеним одређеним вредностима. На то можемо гледати као на нешто што је иницијализирано вриједностима. Ако се мора креирати нова класа, конструктор се позива да додијели меморију за ту инстанцу. Чак можемо пренети вредности као аргументе док позивамо конструктора. Дођите сада до наше стварне расправе. Класе омогућавају конструкторима свих врста, попут аргумената са или без, док конструкције допуштају конструкторима само аргументе, тј. Параметризиране конструкторе.
  • Деструктор: Деструктор се зове кад год морамо избрисати инстанцу класе. Деструктор заузврат брише ту инстанцу и ослобађа меморију. Класа може користити деструктор, док Структ не може.
  • Иницијализација варијабли чланова: У Класама можемо директно иницијализовати променљиве члана; таква иницијализација није могућа са Струцтс.
  • Израда објекта: Општа синтакса за креирање предмета у класама је:

Демо обј = нови Демо ();

То значи да морамо користити кључну реч „ново“ док стварамо објекте класе. Ово није потребно приликом креирања објеката Струцтс. Погледајте само њихову синтаксу:

Демо обј;

Одлично функционира и без кључне речи "ново".

Када користити класу и када користити Структуру?

Како су класе флексибилније у заједничком преношењу података и функција, за то можемо ићи када су кориштени објекти сложени и велики. У нашем примеру, тржни центар може да користи класу 'продавница' да би изразио систем на бољи начин. Међутим, конструкције су ограничене на мање објекте, јер су релативно мање ефикасне од класа. Стога, ако сами дизајнирате продавницу, Струцтс су бољи избор.

Како претворити структуру у класу и вице Верса?

Можда сте чули изразе „бокс“ и „одбацивање“ да бисте претворили структуру у класу и обрнуто. Иако су ово ефикасни процеси који нам помажу у претворби, с њима се треба поступати опрезно. Како то директно утиче на меморијске локације, има огроман утицај на перформансе нашег система. Штавише, утиче на процесе одвоза смећа и резултира укупном неефикасношћу система. Стога ове конверзије користите само када је то потребно.

Погледајмо горе наведене разлике у табеларном облику.

С.Но Појмови Разлике
Класа Струцт
1 Поновна употребљивост Потпуно поновна употреба Није поновна употреба
2 Видљивост Све функције класе су видљиве њеним објектима Подаци објекта објекта нису видљиви осталим објектима исте Структуре
3 Пасс би Референце & Пасс би Валуе Користи се путем референце Користи се путем вредности
4 Наслеђивање Функције класе се могу наслиједити по њеним подразредима; омогућава наслеђивање Никада не дозвољава наследство
5 Подразумевана видљивост Сви чланови класе су подразумевано приватни Сви чланови Структа су подразумевано јавни
6 Величина када је празна Величина празне класе је 1 бајт Величина празне Структуре је 0 бајтова
7 Отпад Како се користи пропусница, прикупљање смећа је могуће Како користи пролазну вредност, одвоз смећа није могућ
8 Управљање меморијом Једноставност процеса одвоза смећа помаже у ефикасном управљању меморијом Недостатак сакупљања смећа резултира лошим управљањем меморијом
9 Конструктори Омогућује конструкторе свих врста, као што су са или без параметара Допушта само конструисане параметре
10 Деструктори Могу га користити Не могу га користити
11 Иницијализација варијабли чланова Омогућава директну иницијализацију варијабли чланова Не дозвољава директну иницијализацију речи променљивих чланова
12 Израда објекта За време креирања објекта неопходно је користити кључну реч „ново“ Током креирања објекта није неопходно користити кључну реч „ново“
13 Када користити? Боље за веће и сложеније објекте у којима је потребно наследство Боље за мање и једноставније предмете у којима је наслеђивање мање важно.

Скоро смо покрили све разлике између Класе и Структуре, а ако сматрате да нешто недостаје, јавите нам се. Учимо заједно и искористимо максимално то знање!