Какво прави :: в C++?

Kakvo Pravi V C



C++ е многофункционален език за програмиране, който предлага на разработчиците широк набор от функционалности. Една от най-често използваните функции в C++ е оператор за разрешаване на обхват , известен също като двойно двоеточие (::) . Въпреки че е жизненоважна част от езика, двойно дебело черво може да бъде объркващ за много разработчици, особено за тези, които са нови в него.

В това ръководство ще разгледаме оператор с двойно двоеточие (::). в C++ и как работи в различни сценарии.

Какво прави :: в C++?

В C++, резолюция на обхвата оператор (::) се използва за извличане на имената на променливите, присъстващи на различни нива на обхват. Обхватът в програмирането се отнася до контекста, където могат да бъдат достъпни променливи и функции.







Използване на :: в различни случаи в C++

В C++, оператор за разрешаване на обхват (::) има различни приложения в зависимост от контекста, в който се използва. Следват някои забележителни употреби на този оператор:



1: Достъп до променлива или функция в различно пространство от имена

А пространство от имена се използва в C++ за групиране на свързани функции, класове и променливи, за да се избегнат конфликти при именуване. Когато дефинирате променлива или функция в a пространство от имена , името на променливата или функцията се вижда само в него пространство от имена .



В C++ можете да използвате оператор за разрешаване на обхват (::) заедно с пространство от имена име и името на променливата или функцията за достъп до променлива или функция, дефинирана в различно пространство от имена. Това ви позволява да получите достъп до променливата или функцията от a пространство от имена различен от този, в който е създаден.





За да разберете горния случай, разгледайте следния код като пример:

#include

използване на пространство от имена std ;

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

конст двойно ПИ = 3,14159 ;

двойно квадрат ( двойно х ) {

връщане х * х ;

}

}

вътр основен ( ) {

cout << 'Стойността на PI е: ' << математика :: ПИ << endl ;

cout << 'Квадратът на 5 е: ' << математика :: квадрат ( 5 ) << endl ;

връщане 0 ;

}

Горният код използва математическо пространство от имена за достъп до „ПИ“ постоянно и 'квадрат' функция с помощта на оператор за разрешаване на обхват „::“ . След това отпечатва стойностите на конзолата.



Изход

2: Достъп до глобалната променлива в програмата

Когато едно и също име на локални и глобални променливи присъства в програмата, локалната променлива може да скрие глобалната. В такива ситуации можете да използвате оператор за разрешаване на обхват (::) за достъп до глобалната променлива. Този оператор ни позволява изрично да се позоваваме на глобалната променлива въз основа на нейния обхват.

Например в кода, даден по-долу, ние се позовахме на глобалната променлива „а „чрез оператор за разрешаване на обхват (::) , от вътрешността на функция, където е дефинирана локална променлива със същото име:

#include

използване на пространство от имена std ;

вътр а = петнадесет ;

вътр основен ( )

{

вътр а = 35 ;

cout << 'Стойността на глобалната променлива a е ' << :: а << endl ;

cout << 'Стойността на локалната променлива a е ' << а << endl ;

връщане 0 ;

}

В горния код променливата a, присъстваща извън основната функция, е the глобална променлива и променливата a в основната функция е локална променлива със същото име като глобалната променлива. В командата cout сме използвали оператора за разрешаване на обхвата, за да отпечатаме глобалната променлива а .

Изход

3: Дефиниране на функция извън класа

В C++ можете да дефинирате функция на класа извън дефиницията на класа и това може да се направи с помощта на оператор за разрешаване на обхват (::) за да посочите към кой клас принадлежи функцията. Това е необходимо, защото функцията е дефинирана извън обхвата на класа.

Ето примерен код, който демонстрира това използване на оператор за разрешаване на обхват :

#include

използване на пространство от имена std ;



клас myClass {

публичен :

невалиден моята функция ( ) ;

} ;

невалиден Моят клас :: моята функция ( ) {

cout << 'myfunction() Извикана!' ;

}

вътр основен ( )

{

myClass classObj ;

classObj. моята функция ( ) ;

връщане 0 ;

}

В горния код функцията член моята функция () се дефинира извън класа с помощта на оператор за разрешаване на обхват :: да уточня това моята функция () принадлежи към класа myClass.

Изход

4: Достъп до статични членове на класа

В C++, когато има статичен член и локална променлива със същото име присъства в класа, оператор за разрешаване на обхват (::) може да се използва за достъп до статични членове на клас. Това позволява на програмата да прави разлика между локалната променлива и статичния член.

Ето примерен код, който се отнася до използването на оператор за разрешаване на обхват за такъв случай:

#include

използване на пространство от имена std ;

клас myClass {

публичен :

статичен вътр myStatVar ;

} ;

вътр Моят клас :: myStatVar = 5 ;

вътр основен ( ) {

вътр myStatVar = 10 ;

cout << 'Локална променлива myStatVar: ' << myStatVar << endl ;

cout << 'Променлива на класа myStatVar: ' << Моят клас :: myStatVar << endl ;

връщане 0 ;

}

Горната програма първо дефинира клас Моят клас със статична членска променлива myStatVar . След това дефинира локална променлива със същото име в основната функция на програмата. За достъп до променливата на класа, оператор за разрешаване на обхват (::) се използва с името на класа Моят клас . Програмата извежда стойността на двете променливи на конзолата.

Изход

5: Използвайте с множество наследявания

The оператор за разрешаване на обхват (::) се използва и за указване коя версия на член да се използва, когато C++ клас е извлечен от множество родителски класове, които имат членски променливи или функции с едно и също име. Можем да правим разлика между различни версии на един и същи член, като използваме оператор за разрешаване на обхват последвано от името на родителския клас и името на члена.

#include

използване на пространство от имена std ;

клас Родител1 {

публичен :

невалиден печат ( ) {

cout << „Това е функция за печат на клас Parent1.“ << endl ;

}

} ;

клас Родител2 {
публичен :
невалиден печат ( ) {
cout << „Това е функция за печат на клас Parent2.“ << endl ;
}
} ;
клас myClass : публичен родител1 , публичен родител2 {
частен :
вътр никой ;

публичен :
Моят клас ( вътр н ) {
никой = н ;
}
невалиден печат ( ) {
Родител1 :: печат ( ) ; // извикване на функцията за печат на Parent1
Родител2 :: печат ( ) ; // извикване на функцията за печат на Parent2
cout << 'Стойността на num е: ' << никой << endl ; // отпечатване на стойността на num
}
} ;
вътр основен ( ) {
myClass obj ( 42 ) ; // създаване на обект на MyClass с num, инициализирано на 42
обект печат ( ) ; // извикване на функцията print() на обекта
връщане 0 ;
}

Горната програма демонстрира използването на оператор за разрешаване на обхват (::) за разграничаване на функциите за печат на Родител1 и Родител2 когато и двата класа са наследени от Моят клас. Чрез извикване на функциите с Родителски клас име, предхождащо името на функцията, можем да посочим коя версия на функцията да използваме.

Изход

Долен ред

The оператор за разрешаване на обхват (::) е жизненоважен компонент в C++, използван за достъп до имена на променливи в различни нива на обхват. Операторът има различни приложения, включително достъп до променлива или функция в различно пространство от имена, достъп до глобална променлива, дефиниране на функция извън класа, достъп до статични членове на клас и използване на множество наследявания. Въпреки че може да бъде объркващо за новите разработчици, разбирането на оператор за разрешаване на обхват (::) е от съществено значение за добрата програмна практика.