Шта :: ради у Ц++?

Sta Radi U C



Ц++ је свестрани програмски језик који програмерима нуди широк спектар функционалности. Једна од најчешће коришћених функција у Ц++ је оператор резолуције опсега , такође познат као двотачка (::) . Упркос томе што је витални део језика, двоструко дебело црево оператор може бити збуњујући за многе програмере, посебно оне који су нови у њему.

У овом водичу ћемо погледати оператор двоструке двотачке (::). у Ц++ и како то функционише у различитим сценаријима.

Шта :: ради у Ц++?

У Ц++, резолуција обима оператер (::) се користи за преузимање имена променљивих присутних на различитим нивоима опсега. Опсег у програмирању се односи на контекст у коме се може приступити променљивим и функцијама.







Употреба :: у различитим случајевима у Ц++

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



1: Приступите променљивој или функцији у другом простору имена

А именског простора се користи у Ц++-у за груписање повезаних функција, класа и променљивих да би се избегли сукоби имена. Када дефинишете променљиву или функцију унутар а именског простора , име променљиве или функције је видљиво само унутар тога именског простора .



У Ц++, можете користити оператор резолуције опсега (::) заједно са именског простора име и име променљиве или функције за приступ променљивој или функцији дефинисаној у другом именском простору. Ово вам омогућава да приступите променљивој или функцији из а именског простора осим оне у којој је настала.





Да бисте разумели горњи случај, размотрите следећи код као пример:

#инцлуде <иостреам>

користећи простор имена стд ;

математика простора имена {

конст дупло ПИ = 3.14159 ;

дупло квадрат ( дупло Икс ) {

повратак Икс * Икс ;

}

}

инт главни ( ) {

цоут << 'Вредност ПИ је: ' << матх :: ПИ << ендл ;

цоут << 'Квадрат од 5 је: ' << матх :: квадрат ( 5 ) << ендл ;

повратак 0 ;

}

Горњи код користи математички именски простор да приступите “ПИ” стални и 'квадрат' функција помоћу оператор резолуције опсега “::” . Затим штампа вредности на конзоли.



Излаз

2: Приступ глобалној променљивој у програму

Када је исто име локалне и глобалне променљиве присутно у програму, локална варијабла може сакрити глобалну. У таквим ситуацијама можете користити оператор резолуције опсега (::) за приступ глобалној променљивој. Овај оператор нам омогућава да се експлицитно позивамо на глобалну променљиву на основу њеног опсега.

На пример, у коду датом у наставку, позвали смо се на глобалну променљиву ‘а „преко оператор резолуције опсега(::) , из функције у којој је дефинисана локална променљива са истим именом:

#инцлуде <иостреам>

користећи простор имена стд ;

инт а = петнаест ;

инт главни ( )

{

инт а = 35 ;

цоут << 'Вредност глобалне променљиве а је ' << :: а << ендл ;

цоут << 'Вредност локалне променљиве а је ' << а << ендл ;

повратак 0 ;

}

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

Излаз

3: Дефинишите функцију изван класе

У Ц++, можете дефинисати функцију класе изван дефиниције класе и то се може урадити помоћу оператор резолуције опсега (::) да одредите којој класи функција припада. Ово је неопходно јер је функција дефинисана изван опсега класе.

Ево примера кода који демонстрира ову употребу оператор резолуције опсега :

#инцлуде <иостреам>

користећи простор имена стд ;



цласс миЦласс {

јавности :

празнина моја функција ( ) ;

} ;

празнина мој разред :: моја функција ( ) {

цоут << 'мифунцтион() Цаллед !' ;

}

инт главни ( )

{

миЦласс цлассОбј ;

цлассОбј. моја функција ( ) ;

повратак 0 ;

}

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

Излаз

4: Приступ статичким члановима класе

У Ц++, када постоји статички члан и локална променљива са истим именом присутна унутар класе, тхе оператор резолуције опсега (::) може се користити за приступ статичким члановима класе. Ово омогућава програму да направи разлику између локалне променљиве и статичког члана.

Ево примера кода који се односи на употребу оператор резолуције опсега за такав случај:

#инцлуде <иостреам>

користећи простор имена стд ;

цласс миЦласс {

јавности :

статична инт миСтатВар ;

} ;

инт мој разред :: миСтатВар = 5 ;

инт главни ( ) {

инт миСтатВар = 10 ;

цоут << 'Локална варијабла миСтатВар: ' << миСтатВар << ендл ;

цоут << 'Променљива класе миСтатВар: ' << мој разред :: миСтатВар << ендл ;

повратак 0 ;

}

Горњи програм прво дефинише класу мој разред са статичном променљивом члана миСтатВар . Затим дефинише локалну променљиву са истим именом унутар главне функције програма. Да бисте приступили променљивој класе, оператор резолуције опсега (::) се користи са именом класе мој разред . Програм шаље вредности обе променљиве на конзолу.

Излаз

5: Употреба са вишеструким наслеђивањем

Тхе оператор резолуције опсега (::) се такође користи да назначи коју верзију члана треба користити када је Ц++ класа изведена из више надређених класа које имају променљиве или функције чланова са истим именом. Можемо разликовати различите верзије истог члана користећи оператор резолуције опсега након чега следи име родитељске класе и име члана.

#инцлуде <иостреам>

користећи простор имена стд ;

разред Родитељ1 {

јавности :

празнина принт ( ) {

цоут << „Ово је функција штампања класе Парент1.“ << ендл ;

}

} ;

разред Родитељ2 {
јавности :
празнина принт ( ) {
цоут << „Ово је функција штампања класе Парент2.“ << ендл ;
}
} ;
цласс миЦласс : јавни Родитељ1 , јавни родитељ2 {
приватни :
инт на једном ;

јавности :
мој разред ( инт н ) {
на једном = н ;
}
празнина принт ( ) {
Родитељ1 :: принт ( ) ; // позивамо функцију штампања Парент1
Родитељ2 :: принт ( ) ; // позивамо функцију штампања Парент2
цоут << 'Вредност нум је: ' << на једном << ендл ; // исписује вредност нум
}
} ;
инт главни ( ) {
миЦласс обј ( 42 ) ; // креирамо објекат МиЦласс са бројем иницијализованим на 42
обј. принт ( ) ; // позива принт() функцију објекта
повратак 0 ;
}

Горњи програм демонстрира употребу оператор резолуције опсега (::) да разликује функције штампања Родитељ1 и Родитељ2 када се обе класе наслеђују од мој разред. Позивањем функција са Родитељска класа име које претходи имену функције, можемо одредити коју верзију функције да користимо.

Излаз

Суштина

Тхе оператор резолуције опсега (::) је витална компонента у Ц++ која се користи за приступ именима променљивих на различитим нивоима опсега. Оператор има различите употребе, укључујући приступ променљивој или функцији у другом именском простору, приступ глобалној променљивој, дефинисање функције ван класе, приступ статичким члановима класе и коришћење вишеструког наслеђа. Иако може бити збуњујуће за нове програмере, разумевање оператор резолуције опсега (::) је од суштинског значаја за добру праксу програмирања.