Све што треба да знате о простору имена на језику Ц ++



Овај чланак ће вам пружити детаљно и свеобухватно знање о простору имена на језику Ц ++. Постоје разне врсте и употребе у било ком програму.

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

Потреба за именским простором

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





Простор имена у ц ++

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



Сви типови и функције стандардне библиотеке Ц ++ декларисани су у стд простору имена или именским просторима угнежђеним унутар стд-а, па се зато широко користи у већини програма.

како научити визуелни студио

Дефинисање простора имена

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

намеспаце намеспаце_наме {инт а, б // декларације кода где су // а и б декларисани у // намеспаце_наме'с сцопе}

Тачке које треба запамтити приликом дефинисања простора имена

  • Декларације простора имена појављују се само на глобалном опсегу.
  • Декларације простора имена немају спецификаторе приступа.
  • Декларације простора имена могу се угнездити у други простор имена.
  • Нема потребе да дајете тачку и зарез након завршне заграде дефиниције простора имена.
  • Дефиниција простора имена може се подијелити на неколико јединица.
#инцлуде усинг намеспаце стд намеспаце фирст_фунцтион {воид фунц () {цоут<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Излаз:



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

Коришћење простора имена у Ц ++

Постоје три начина за употребу простора имена у програму,

  1. Директива о коришћењу
  2. Декларација о употреби
  3. Оператер резолуције опсега (: :)

Директива о коришћењу

Можемо да избегнемо додавање простора имена помоћу Користећи директива о именском простору. Користећи Кључна реч нам омогућава да у ваш програм увеземо читав простор имена са глобалним опсегом. Може се користити за увоз простора имена у други простор имена или било који програм према нашим захтевима.

Размислите о заглављу датотеке Намеспаце_фирст.х:

именски простор Фирст {инт а цласс Фирст_цласс {инт и}}

Укључујући горњу датотеку заглавља простора имена у датотеку Намеспаце_сецонд.х: укључите „Намеспаце_фирст.х“

намеспаце Сецонд {употреба простора имена Фирст Фирст_цласс обј инт и}

Уводимо намеспаце_Фирст у намеспаце_Сецонд, стога ће класа Фирст_цласс сада бити доступна у намеспаце_Сецонд. Отуда можемо да напишемо следећи програм у засебну датотеку, рецимо нев_филе.цпп.

#инцлуде 'намеспаце_сецонд.х' воид тест () {усинг намеспаце Сецонд // стварање објекта класе Фирст_цласс Фирст_цласс обј2}

Стога , употреба директиве много олакшава употребу простора имена у Ц ++-у, где год желите.

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

У декларацији усинг увозимо по једно одређено име које је доступно само унутар тренутног опсега и позива се помоћу резолуције опсега. НАПОМЕНА: Име увезено помоћу усинг-декларације може заменити име увезено помоћу усинг директиве. То можемо видети у доњем примеру.

Размотримо датотеку заглавља Нев_Филе.х:

простор имена Фирст {воид А () {цоут<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Сада креирајмо нову програмску датотеку са именом Нев_филе_2.цпп са доњим кодом:

#инцлуде 'Нев_филе.х' воид Б () {користећи простор имена Фирст // користећи директиву користећи Сецонд :: А // користећи декларацију Фирст :: А () // класа А () из Фирст намеспаце А () // позива А () другог простора имена}

Оператор резолуције опсега (: :)

Можемо изричито навести било које име декларисано у простору имена користећи име простора простора и резолуцију опсега “ :: ' оператор са идентификатором.

добити величину низа јавасцрипт
простор имена Нев_спаце {класа Кс {статички инт и публиц: воид фунц ()} // декларација имена класе класа И} // Иницијализација променљиве статичке класе инт Нев_спаце :: Кс :: и = 23 класа Нев_спаце :: И {инт а публиц: инт гетдата () {цоут<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Непрекидни простор имена на језику Ц ++

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

намеспаце намеспаце_наме {// тело кода}

Угњежђени простор имена у Ц ++

Простори имена могу се лако угнездити и можемо дефинирати један простор имена унутар другог простора имена на следећи начин:

намеспаце намеспаце_наме1 {// боди цоде оф намеспаце_наме1 намеспаце намес_наме2 {// боди цоде угнијежђено намамеспаце_наме2}}

Овим смо дошли до краја простора имена у чланку Ц ++. Надам се да сте добили идеју шта је тачно простор имена у Ц ++-у и који су различити начини његовог дефинисања. Ако желите да сазнате више, погледајте Едурека, поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га помените у одељку за коментаре на овом блогу и јавићемо вам се што је пре могуће.