В Часови за развој и наследство
Се што сте знаеле во претходните упатства, секако веќе беше дел од програмскиот јазик C ++. Како и да е, развојот на програма C ++ обично изгледа различно од она што го видовте досега во примери.

До сега сте запознале голем дел од основниот вокабулар на C ++ и го примениле на прилично рудиментарен начин. Во пракса, програмите C ++ обично се состојат првенствено од часови. Програмерите се фокусираат на создавање часови што се прилагодени на специфичните потреби на задачата. Откако ќе се создадат класи, тие се користат како типови на податоци за дефинирање на променливи. Овие променливи се нарекуваат објекти и тие потоа се користат во рамките на програмата.
Откако креиравме нов, празен проект со main.cpp, како и секогаш, создаваме датотека заглавие со име класа.
Класата е декларирана само во датотеката со заглавие. Значи, компајлерот знае дека подоцна ќе има класа наречена тркачки автомобили. Клучниот збор јавно значи дека она што следува подолу е достапно однадвор. Приватно, од друга страна, значи дека кодот подолу може да се повика само во самата класа. Таму сè уште е заштитен, но тој игра улога само во наследството. За самата класа, заштитеното е еквивалентно на приватното. Во примерот е дефинирана целобројната променлива kmh. Треба да се прочита однадвор со користење на метод за прибирање (int брзина (неважечка);). Методите rennwagen (); и тркачки автомобил (int kmh); се 2-те конструктори на часот. Тука конструкторот беше преоптоварен како со функции. Во зависност од параметрите со кои се инстанцира класата, компајлерот одлучува кој од двајцата треба да се повика. Конструктор тркачки автомобил (int kmh); не само што ја стартува количката, туку и директно го притиска педалот и забрзува до 200 км на час. Уништувачот
Тркачки автомобил(); се повикува кога инстанцата е уништена со бришење или програмата е прекината. Со методите празнина за забрзување (int kmh);, неправилна сопирачка (празнина); и инт брзина (неважечка); важат истите правила како и за нормалните функции. Следно ја креираме датотеката klasse.cpp под Изворни датотеки. Ова е местото каде влегува кодот за самата класа.
Прво е дефиниран конструкторот rennwagen: rennwagen () <>. Бидејќи секогаш враќа некој предмет (имено самиот), не се поставува тип на податок пред него. Во конструкторот, внатрешната променлива kmh е упатена со клучниот збор ова и е поставена на 0. Ова е секогаш покажувачот кон вашата класа и може да се пристапи до променливите и методите во рамките на класата. Текст исто така излегува на конзолата.
Тогаш се дефинира уништувачот на класа. Можете да го препознаете со фактот дека има точно исто име како и конструкторот со таа разлика што има тилда
стои напред. Треба да биде присутно само ако е исто така во декларацијата за заглавие. Ниту еден тип на податок не е поставен пред деструктурот. Во овој случај, променливата kmh е поставена на 0.
Останатите методи треба да бидат самообјаснети, предмет на правилата за функциите.
Следно треба да го адаптираме main.cpp.
Важно е тука да се вклучи датотеката со заглавие klasse.h. Ако ова е заборавено, компајлерот не може да ја најде класата декларирана во датотеката. При инстанцирање на часот, сега имаме на располагање 2 конструктори. Во примерот, беше повикан конструкторот rennwagen (). Ова само ја започнува количката. Другиот конструктор, пак, се чини дека е „во бегство“ затоа што го стартува моторот и забрзува директно до 199 км на час. Откако ќе се инстанцира класата, имаме предмет од класата на тркачки автомобили во променливата Bmw. Класните варијабли (наречени својства) и методите сега се достапни преку Bmw проследено со период (доколку променливите или методите се дефинираат како јавни). Bmw.kmh не е дозволен надвор од часот, бидејќи е прогласен за приватен.
Се разбира, може да се користи и покажувач.
Класно наследство
Методите и променливите на класите (својствата) можат да се пренесат (наследат) на други класи. Во примерот погоре, беше создаден класа тркачки автомобил. Ова вклучува методи како што се забрзување (), сопирање () и брзина (). Во принцип, овие методи одговараат на секој автомобил и затоа класата може да се користи како еден вид основна класа.
Во следниот пример ќе создадеме нова класа, каприо, која ги наследува методите од Ренваген и има неколку посебни карактеристики.
Следниот пример покажува како работи ова. Но, прво мора да се креира датотека со заглавие по име vererbung.h и нова изворна датотека (vererbung.cpp).
Класниот каприо се декларира со класниот каприо. На : јавен тркачки автомобил значи дека класата каприо ги наследува сите методи и променливи (својства) од класата на тркачки автомобили. Предуслов е секако дека методите и променливите (својства) што се наоѓаат во тркачките автомобили и треба да се користат во каприо се јавни или заштитени. Во самата каприо класа, ги прогласуваме 2-те конструктори и методот verdeck () во датотека cpp.
Интересен е конструкторот каприо (int kmh). Претходно, во класата на тркачки автомобили, ние исто така го преоптоваривме нормалниот конструктор со тркачки автомобили (int kmh). Значи, би било предност ако се повика преоптоварен каприо (int kmh) конструктор, така што тогаш не се вчитува стандардниот матичен конструктор, туку родителот (int kmh). За да е можно вакво нешто, соодветниот конструктор мора да биде дефиниран во датотеката со заглавие: каприо (int kmh): тркачки автомобил (kmh)
Конструкторот на матичната класа што треба да се повика, вклучително и потребните параметри, е едноставно забележан по дебелото црево и пред телото на функцијата.
Во vererbung.cpp е дефиниран само методот verdeck (), во спротивно имаме само конструктори и тие се веќе дефинирани.
Бидејќи сега имаме нова класа, секако мора да го смениме и кодот на main.cpp.
Кога се инстанцира новата класа, матичниот конструктор на тркачки автомобили секогаш се извршува прво, бидејќи од неа потекнува класата каприо. Потоа се повикува конструкторот каприо, што за возврат го нарекува методот verdeck ().
Повик со окован метод
Клучен збор ова е индикаторот за самата класа. Овој покажувач може да се дефинира и како тип на поврат. Ова значи дека методите може да се наречат директно поврзани. Еве самостоен пример кој нема никаква врска со остатокот од страницата:
Со класата за дефиниција & rCall (); се враќа сопствениот предмет. Ако методот го врати својот објект, може да се пристапи до друг метод директно преку операторот за избор на компонента (во овој случај периодот.). Сепак, методите мора да бидат дефинирани како јавни.
Со класата за дефиниција * pCall (); се враќа и сопствениот предмет, но како покажувач. До друг метод може да се пристапи директно преку операторот за избор на компонента (во овој случај стрелката на цртичката ->). Методите исто така мора повторно да бидат јавни. Лично, мислам дека варијантата -> е поубава, затоа што претходно развив PHP веќе 10 години.:)