Топ-100
Back

ⓘ C++ класи. C++програмскиот јазик им дозволува на програмерите да дефинираат специфични типови на податоци преку употребата на класи. Овие типови на податоци се ..




                                               

Аполипопротеин

Аполипопротеини се протеини коишто врзуваат липиди и формираат липопротеини. Липидите во вид на липопротеини се транспортираат низ лимфниот систем и крвотокот. Аполипопротеините исто така имаат функција како кофактори на ензими, како лиганди за поврзување на липопротеините за рецептори и др.

                                               

Прогестоген

Прогестогените се класа на стероидни хормони кои се врзуваат за ги активираат прогестеронските рецептори. Најзначаен прогестоген во организмот е прогестеронот. Други ендогени прогестогени се 17α-хидроксипрогестерон, 20α-дихидропрогестерон, 5α-дихидропрогестерон, 11-деоксикортикостерон, и 5α-дихидродеоксикортикостерон. Синтетските прогестогени воглавно се нарекуваат прогестини. Прогестогените се едни од петте главни класи на стероидни хормони, заедно со андрогените, естрогените, глукокортикоидите, и минералокортикоидите, како и невростероидите. Сите прогестогени се карактеризираат со нивнио ...

                                               

Сесквитерпенски лактон

Сесквитерпенските лактони се класа на хемиски соединенија; тие се сесквитерпеноиди и содржат лактонски прстен, од каде им потекнува името. Тие се присутни во многу растенија и можат да предизвикаат алергиски реакции и токсичност во поголеми дози, особено кај добитокот кој паси. Некои исто така се присутни и во корали каков што е Maasella edwardsi.

                                     

ⓘ C++ класи

C++програмскиот јазик им дозволува на програмерите да дефинираат специфични типови на податоци преку употребата на класи. Овие типови на податоци се познати како објекти и можат да содржат променливи, константи, функции и преоптоварени оператори дефинирани од самиот програмер. Синтаксички, класите се проширување од C структурата, коишто не можат да содржат функции или преоптоварени оператори.

                                     

1. Разлики помеѓу структури во C и класи во C++

Во C++, структура е класа дефинирана со резервираниот збор struct. Нејзините членови и основни класи се дефинирани под дифолт. Класа дефинирана со резервираниот збор class има сопствени членови и основни класи под дифолт.

                                     

1.1. Разлики помеѓу структури во C и класи во C++ Групни класи

Групна класа е класа без декларирани конструктори од страна на програмерот, не приватни или заштитени податоци, без основни класи и без виртуелни функции. Таква класа може да биде иницијализирана со заштитен, со запирака одделена, список на иницијализирани параграфи. Следниот код има иста синтакса и во C и во C++:

                                     

1.2. Разлики помеѓу структури во C и класи во C++ POD структури

POD структура алгл. Plain Old Data Structureе групна класа која што нема нестатички податоци од типот не-POD-структура или низа од такви типовиили референца, и нема оператор за задавање и деструктор дефиниран од самиот програмер. POD структурата може да се речи дека е C++ еквивалент на C структурата. Во најмногу случаи, POD структурата ќе има ист распоред на меморијата со соодветната структура декларирана во C. Поради оваа причина, POD структурите се понекогаш вообичаени како C-стил структурите.

                                     

2. Декларација и употреба

C++ структурите и класите имаат свои сопствени членови. Овие членови содржат променливи вклучувајќи други структури и класи, функции определени идентификатори или преоптоварени оператори познати како методи, конструктори и деструктори. Членовите се декларирани да бидат приватни или јавно достапни употребувајќи јавен и приватен пристап. Секој член покажуван од покажувач ќе има поврзан пристап сè додека не наиде друг покажувач. Исто така има наследување помеѓу класите кои можат да користат" заштитени:” покажувачи.

                                     

2.1. Декларација и употреба Основна декларација и променливи членови

Класите и структурите се декларирани со резервираните зборови class и struct соодветно. Декларацијата на членовите се наоѓа се наоѓа внатре во оваа декларација. Парчето код кое следува покажува пример на двете struct и class декларации:

Двете декларации се функционално еквивалентни. Во горенаведените примери name и age се наречени променливи членови на личноста datatype. Забележете дека знакот точка запирка е обавезен. Треба да се знае дека во една од овие декларации но не и во двете, person може да се употреби како што следува за создавање нови дефинирани променливи на person типот на податоци:

При извршувањето на горенаведениот код како излез ќе се добие:

                                     

2.2. Декларација и употреба Функции на членовите

Важна карактеристика на C++ класи и структури се функциите на членовите member function. Секој тип на податок може да има своја сопствена функција наречени методи кои имаат пристап до сите приватни и јавни членови на типот на податоци. Во телото на овие нестатички функции на членовите, резервираниот збор this се користи за однос на објектот со функции кои ги повикува. Тоа обично се спроведува со носење на адресата на објектот како имплициден прв аргумент на функцијата. Види го претходниот person тип во нов пример:

Во погорниот пример print функцијата е декларирана во телото на класата и се дефинира со името на класата проследена со знакот. И name и person се приватни вообичаено за класи и print е деклариран како јавен како што е потребно ако се користи надвор од класата. Со функцијата на членот print, печатењето може да биде упростено во:

каде што a и b погоре се нарекуваат испраќачи, и секој од нив ќе се однесува на нивните променливи членови кога print функцијата е извршена. Тоа е вообичаено да се раздели декларацијата на класата или структурата наречена нејзин интерфејс и нивното дефинирање наречено нивна имплементација во разделени единки. Интерфејсот, потребен за корисникот, се чува во хедерот header и имплементацијата се чува засебно во секој извор или компајлирана форма.



                                     

2.3. Декларација и употреба Наследување

Наследувањето е имплементирано во конкатеинг concatenating класите во меморијата. Ова ја прави is-a врската наследување многу природна. Земете го предвид примерот:

Наслeдувањето на P со P* p покажувањето на него, во меморијата ќе изгледа вака:

+----+ |P x| +----+ ↑ p

Наследувањето на С со С* с покажувањето на него, во меморијата ќе изгледа вака:

+----+----+ |P x|C y| +----+----+ ↑ c

На овој начин, во многу вистинска смисла, *с е Р.

Повеќекратните наследувања не се толку едноставни. Ако класата D ги наследува Р1 и Р2, во меморијата Р1 ќе биде следбеник на Р2 и следбеник на телото од телото на D. Кога D е потребно да се конвертира во Р2, компајлерот автоматски го донесува покажувачот на Р2.

                                     

2.4. Декларација и употреба Преоптоварени оператори

Во С++, оператори, како + - *, можат да се преоптоварат за да се прилагодат на потребите на програмерите. Овие оператори се нарекуваат преоптоварени оператори. По договор, преоптоварените оператори треба да се однесуваат слично како што се однесуваат во вградените бази на податоци., но ова е барано. Еден може да декларира структура наречена integer во која променливите вистина содржат целобројни податоци, но со повикување integer * integer сумата, како замена за продуктот, од integer може да се добие:

Кодот погоре користи конструктор за да ја" конструира” излезната вредност. За појасна претстава иако ова ќе ја намалува ефикасноста на програмата, погорниот код може да биде препишан:

Програмерите можат исто така што ставаат прототипи на оператори во struct декларацијата и да дефинираат функција на операторот во глобалниот простор:

i погоре претставува сопствена променлива на испраќачот, кадешто k.i претставува променлив член од променливиот аргумент k. Резервираниот збор cosnt се појавува двапати во кодот погоре. При првото појавување, аргументот const integer &k, покажува дека променливиот аргумент нема да биде променет со функцијата. Второто појавување на крајот на декларацијата му укажува на компајлерот дека испраќачот нема да се смени со стартување на функцијата. Во const integer &k знакот & осначува" премин со повикување”. Кога функцијата е повикана, покажувачот на променливата ќе премине на функцијата, подобро од вредноста на променливата. Истите својстава за преоптоварување од погоре се применети и во класите. Треба да се каже дека arity, associativity и precedence на операторите не може да се промени.



                                     

2.5. Декларација и употреба Бинарни преоптоварени оператори

Бинарните оператори со два аргументи се преоптоваруваат со декларирање функција со" идентификаторот” operatorsomething кој повикува само еден аргумент. Променливите лево од операторот се испраќачите, а пак тоа од десно е аргументот.

Ќе се испечати" 4”.

Следно е список на бинарните преоптоварени оператори:

Операторот" =” помеѓу две променливи од ист тип е преоптоварен автоматски да го копира целата содржина променливи од една на друга. Тоа може да биде препишано со нешто друго, ако е потребно. Операторите мораат да се преоптоваруваат еден по еден, со други зборови, ниедно преоптоварување не е поврзано едно со друго.

                                     

2.6. Декларација и употреба Унарни единечни преоптоварени оператори

Додека некои оператори, како што е наведено погоре, заземаат два услови, испраќачот од лево и аргументот од десно, некои оператори имаат само еден аргумент – испраќачот, и тие се наречени унарни еденинечни. Примери се знакот за негација кога ништо не е внесено лево од него и логичкото НЕ запишано со знак!. Испраќачот на унарните оператори може да биде во лево или во десно од операторот. Следно е список на унарните преотоварени оператори:

Синтаксата на за преоптоварување на унарен оператор, каде што испраќачот е во десно, како што следува:

return_type operator

Кога испраќачот е во лево, декларацијата е:

return_type operator int

стои погоре за да операторот биди преоптоварен. Заменете го return_type со типот на излезната величина

Int параметарот во суштина не значи ништо освен показател за тоа дали испраќачот е во лево од операторот. Const аргументите можат да бидат додадени на крајот од декларацијата ако е тоа возможно.



                                     

2.7. Декларација и употреба Преоптоварени загради

Средните загради argument

Делот кој се наоѓа во заградата е наведен во делот за аргументи.

Малите загради се преоптоваруваат на сличен начин:

return_type operator arg1, arg2.

Членовите во заградата при повик на операторот се наведени во втората заграда.

Според операторите претставени погоре, операторот стрелка ->, и стрелката со ѕвезда -> *, резервираните зборови key и delete исто така можат да бидат преоптоварени. Овие мемориски-или-покажувачки-поврзани оператори мораат да ги извршат функциите за момориско доделување после преоптоварувањето. Како и операторот за додавање =, тие се исто така преоптоварени иако не е направена некоја посебна декларација.

                                     

3. Конструктори

Понекогаш софтверските ижинери сакаат нивните променливи да имаат стандардни или специфични вредности преку декларација. Ова може да се направи преку декларирање конструктори.

Променливите можат да се иницијализираат во листа за иницијализирање, со употреба на две точки, како во примерот подолу. Ова се разликува од ова погоре по тоа што тоа иницијализира со употреба на конструктор, подобро од користење на операторот за доделување. Ова е поефикасно за класите, пред тоа потребно било да бидат конструирани директно; бидејќи е така со доделување, тие прво мораат да бидат иницијализирани со употреба на стандарден конструктор и тогаш да се додели друга вредност. Исто така некои типови како референците и const типовите неможат да бидат доделени и како резултат на тоа мораат да бидат иницијализирани во листата за иницијализација.

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

Кога не се доделени аргументи на конструкторот во примерот погоре, тоа е еднакво на повикување на следечкиот конструктор без аргументи default constructor.

Декларацијата на конструктор изгледа како функција со име исто како типот на податокот. Фактички, ние навистина можеме да го повикуваме конструкторот во форма на функција. Во овој случај излезната вечичина од person типот би била:

Погорниот код создава привремен person објект, и го означува тоа на r употребувајќи копиран конструктор. Подобара начин за создавање на конструктор без непотребното копирање е:

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

Со погорниот конструктор," Hello” ќе се испечати во случај кога person променливата без специфична вредност е иницијализирана.

                                     

3.1. Конструктори Деструктори

Деструкторот е обратно од конструкторот. Тој се повикува кога пример од класа е уништен, пример кога објект на класа создаден во блок во големи загради {} е избришан после затварањето на заградите, тогаш деструкторот е повикан автоматски. Тој ќе биде повикан при празнење на мемориската локација во која е сместена променливата. Деструкторите можат да се употребуваат за ослободување ресурси, како heap-доделената меморија и отворените податотеки кога примерот на класа е уништен. Синтаксата за декларирање деструктор е слична на онаа од конструкторот. Тука нема излезна величина и името на методот е исто со името на класата со знакот тилда ~ пред него.

                                     

4. Структури за шаблони темплејти

C++ дозволува структурите да бидат декларирани како шаблони темплејти. Со други зборови, конструктивните членови не е неопходно да дојдат од специфичниот тип. На пример, следната структура спамти две променливи од самосоздадениот тип и има плус преоптоварен оператор.

После ова, во главната функција, ние можеме да ја употербуваме twothings шаблон структурата за да складираме променливи од било кои два типа на податоци што ги сакаме.

Сите од погорните соопштенија се точни, бидејќи типовите на податоци одговараат точно. Освен тоа, како што е погоре, структурата или класата на типот на податоци string класа во библиотека e искористена исто како типот на конструктивните променливи. Ова покажува дека структурите самите можат да се заменат како шаблони. Строго речено, структурите за шаблони се различни од структурите. Ова е примерливо толкување со примери со фактот дека twothings foo; нема да се компајлира, но twothings foo; will - only the latter is a fully-defined type. Слично, twothings и twothings се различни типови. Ова може да биде збунувачко за оние нови шаблони. На пример, сè додека float може индиректно да се конвертира во double, std vector нема да се конвертира индиректно во std vector. Како и да е, бидејќи конструкторот на std vector зазема итератор, следново функционира:

Примената на шаблоните во постарите верзии на C++ придонесе за" раѓање” на Стандардната Библиотека За Шаблони Standard Template Library.

                                     

5. Својства

Синтаксата во C++ пробува да го направи секој аспект на структурите да изгледа како да е од основните типови на податоци. Поради тоа, преоптоварените оператори дозволуваат структурите да се" злоупотербуваат” исто како integer-от и float-покажувачи броеви, низите на структурите можат да бидат декларирани со помош на средните загради some_structure variable_name, и покажувачите на структурите можат да бидат дереференцирани на истиот начин како покажувачите во основните типови на податоци.

                                     

5.1. Својства Потрошувачка на меморија

Потрошувачата на меморија на структурите е помалку од сумата од големината на меморијата од нејзините составни променливи. Да го видиме на пример twonums структурата подолу како пример.

Структурата се состои од два integer-и. Во многу сегашни компајлери, integer-ите се 32 битни стандардно, па секоја променлива зазема четири бајти од меморијата. Целата структура, поради тоа, зазема најмалку или поточно осум бајти од меморијата, како што следи:

+----+----+ | a | b | +----+----+

Како и да е, компајлерот ќе додаде полнење помеѓу променливите или на крајот од структурата за да го осигура сопственото податочно подредување за дадена компјутерска архитектура, често променливите за полнење да бидат 32 битни подредени. Пример, структурата:

може да изгледа:

+-+-+--+--+--+----+--------+ |c|C|XX|s |XX| i | d | +-+-+--+--+--+----+--------+

во меморијата, каде што XX се два неупотребени бајти. Како што структурите можат да употербуваат покажувачи и низи за да декларираат и иницијализираат променливи членови, потрошувачката на меморијата на структурите не е неопхоно константна. Друг пример за неконстантна големина на меморијата се структурите за шаблони темплејти.

                                     

5.2. Својства Премин преку обраќање

Многу програмери преферираат да го употребуваат знакот & за да ги декларираат аргументите на функцијата вклучуваќи структури. Тоа е бидејќи со употребата на дефернецирањето на само еден збор вообичаено 4 бајти на 32 битна машина, 8 бајти на 64 битна машина потребно е да премине во функција, а тоа е мемориската локација на променливата. Спротивно, ако премин-преку-вредност е употребен, аргументот треба да биде копиран секој пат кога функцијата е повикана, што е" скапо” со големи структури.

                                     

5.3. Својства Резервираниот збор this

За овозможување ефикасна употреба на структури, во С++ е имплементиран резервираниот збор this за повикување функции, конструктори и деструктори, а се однесува на сопствената положба на структурата. Тип на податок од this е покажувач на структура. Резервираниот збор this е посебно важен за функциите на членовите со структурата сама себе си како излезна веичина.

Како што е прикажано погоре, this е покажувач, па ние треба да го употребиме ѕвездичка * или pointer-to-member -> ја врати излезната вредност на структурата за пресметки. Забележете дека резервираниот збор const се појавува само еднаш во првата линија. Ова е бидејќи испраќачот е сменет од функцијата, додека пак параметарот не е. Кога испраќачката променлива е променета и вратена со повик од функцијата, знакот & може исто така што се употреби и во декларацијата за повратниот тип.

                                     
  • Јазикот е првобитно развиен како подобрување на програмскиот јазик C со додавање на класи потоа виртуелни функции преоптоварување на оператори, повеќекратно
  • класа за сите други C класи System.String и System.Array. Двата типа се растегливи со типови избрани од корисникот. Името C sharp беше инспирирано
  • C Standard Library е колекција од класи и функции, кои се напишани во основниот јазик и дел од C ISO стандардите. C Standard Library нуди неколку
  • податоци првобитни и сложени кориснички дефинирани класи или структури. SGI STL specification of vector C reference: vector C Header description
  • бидат складни една на друга, сепак ставаат некои астероиди во различни класи поради поинаквите критериуми во приодот. Двете најзастапени класификации
  • 5 класи на IP адреси classful IP addresses Класа А: 7 - бити мрежа 24 бити хост - 0xx 0 - 126 Loopback локална IP адреса на машината - 127 Класа B: 14 - бити
  • поделени на класи Притоа, класификацијата може да се врши на најразлични начини, па затоа едно исто соединение може да припаѓа на повеќе различни класи Најчесто
  • максимална 255. IP - адресирањето поддржува 5 различни адресни класи A, B, C D и E. Само класите A, B и C се за комерцијална употреба. Најзначајни битови од првиот
  • тоа, сепак, пишување const во Пример 24 - 3 не е оптимизација за повеќето класи Zand во оние случаи каде што тоа е оптимизација, тоа не е компајлер кодот
  • Астероид од типот C јаглероден астероид - најчестиот вид на астероиди, застапен со 75  од вкупниот број. Се одликуваат со многу мало албедо бидејќи