Ц ++

Наслеђивање Ц ++

Наслеђивање Ц ++
Наслеђивање је веома важна карактеристика објектно оријентисаног програмирања. Омогућава програмеру да изведе класи из постојеће класе. Ово је веома корисно, посебно у великом сложеном пројекту, јер програмеру омогућава поновну употребу кода.

У овом чланку ћемо разговарати о концепту наслеђивања у програмирању на Ц ++. Објаснићемо појам функције пријатеља у Ц ++ на радним примерима.

Зашто наслеђивање?

Наслеђивање омогућава стварање нове класе или изведене класе из друге класе или основне класе. Изведена класа или подређена класа имаће све карактеристике родитељске класе или основне класе. Код можемо поново користити уз помоћ наследства.

Тип наследства

Постоје различите врсте наследства:

  1. Једноставно / једно наследство
  2. Хијерархијско наслеђивање
  3. Наслеђивање на више нивоа
  4. Вишеструко наслеђивање

У овом чланку ћемо размотрити само једноставно / једно наследство.

Пример 1:

Сада, погледајмо пример програма за разумевање концепта наследства у Ц++. Дефинисали смо основну класу, а затим из ње извели другу класу. Стога ће изведена класа имати особине (чланове и функције) из основне класе.

#инцлуде
коришћење простора имена стд;
цласс Басе_Цласс

јавно:
инт и;
приказ празнине ()

цоут << "Display of Base Class " << i << endl;

;
класа Деривед_Цласс: јавни Басе_Цласс

јавно:
воид схов ()

цоут << "Show of Derived Class" << endl;

;
инт маин ()

Изведена класа дц;
дц.и = 100;
дц.приказ();
дц.Прикажи();
ретурн 0;

Пример 2:

Ово је још један пример наследства у Ц++. У овом примеру ћемо видети како се позивају конструктори када се креира изведени објекат класе.

Као што можете видети доле, дефинисали смо два конструктора основне класе и три конструктора изведене класе. Из доњег резултата можете јасно приметити да се прво позива конструктор основне класе пре него што се позове конструктор изведене класе.

#инцлуде
#инцлуде
коришћење простора имена стд;
цласс Басе_Цласс

јавно:
Басе_Цласс ()

цоут << "Base_Class - No Parameters" << endl;

Класа_базе (инт к)

цоут << "Base_Class - Parameters : " << x << endl;

;
класа Деривед_Цласс: јавни Басе_Цласс

јавно:
Изведена класа ()

цоут << "Derived_Class - No Parameters" << endl;

Изведена класа (инт и)

цоут << "Derived_Class - Parameters : " << y << endl;

Изведена класа (инт к, инт и): Основна класа (к)

цоут << "Param of Derived_Class : " << y << endl;

;
инт маин ()

Изведена класа д (7,19);

Пример 3:

У овом примеру ћемо видети како се изведени објекти класе могу користити.

Као што видите, дефинисане су две класе: Рецтангле_Цласс и Цубе_Цласс. Рецтангле_Цласс је основна класа из које изведена класа, тј.е., Изведена је Цубе_Цласс. Стога наследимо особине из Рецтангле_Цласс у Цубе_Цласс.

Такође, можете приметити да наследимо Цубе_Цласс са контролом јавног приступа. То значи да изведена класа може приступити свим не-приватним члановима основне класе.

Прогласили смо објекат изведене класе, а затим позвали методе из основне класе, тј.е., сетЛенгтх () и сетБреадтх ().

#инцлуде
коришћење простора имена стд;
класа Рецтангле_Цласс

приватни:
инт ленгтх;
инт ширина;
јавно:
Рецтангле_Цласс ();
Рецтангле_Цласс (инт л, инт б);
Рецтангле_Цласс (Рецтангле_Цласс & р);
инт гетЛенгтх ()

дужина враћања;

инт гетБреадтх ()

вратити ширину;

воид сетЛенгтх (инт л);
воид сетБреадтх (инт б);
инт ареа ();
;
класа Цубе_Цласс: јавни Рецтангле_Цласс

приватни:
висина инт;
јавно:
Цубе_Цласс (инт х)

висина = х;

инт гетХеигхт ()

повратна висина;

воид сетХеигхт (инт х)

висина = х;

инт волуме ()

ретурн гетЛенгтх () * гетБреадтх () * хеигхт;

;
Рецтангле_Цласс :: Рецтангле_Цласс ()

дужина = 1;
ширина = 1;

Рецтангле_Цласс :: Рецтангле_Цласс (инт л, инт б)

дужина = л;
ширина = б;

Рецтангле_Цласс :: Рецтангле_Цласс (Рецтангле_Цласс & р)

дужина = р.дужина;
ширина = р.ширина;

воид Рецтангле_Цласс :: сетЛенгтх (инт л)

дужина = л;

воид Рецтангле_Цласс :: сетБреадтх (инт б)

ширина = б;

инт Рецтангле_Цласс :: ареа ()

повратна дужина * ширина;

инт маин ()

Цубе_Цласс ц (8);
ц.сетЛенгтх (12);
ц.сетБреадтх (9);
цоут<<"Volume is "<

Закључак:

У овом чланку сам објаснио концепт наслеђивања у Ц++. Ц ++ подржава различите типове наслеђа, укључујући „вишеструко наслеђивање“ (тј.е., наслеђивање карактеристика из више основних класа или родитељске класе). Међутим, да то поједноставим, овде сам разматрао само једно наследство. Показао сам три радна примера да објасним како можемо да користимо наслеђивање у програмирању на Ц ++ и поново користимо код. Штавише, ово је врло корисна карактеристика Ц++.

Корисни алати за Линук играче
Ако волите да играте игре на Линуку, велика је вероватноћа да сте можда користили апликације и услужне програме попут Вине, Лутрис и ОБС Студио за поб...
ХД Ремастеред игре за Линук које никада раније нису имале Линук издање
Многи програмери и издавачи игара долазе са ХД ремастером старих игара како би продужили живот франшизе, молимо обожаваоце да захтевају компатибилност...
Како користити АутоКеи за аутоматизацију Линук игара
АутоКеи је услужни програм за аутоматизацију радне површине за Линук и Кс11, програмиран на Питхон 3, ГТК и Кт. Користећи његову скриптну и МАЦРО функ...