Что делает :: в C++?

Cto Delaet V C



C++ — это универсальный язык программирования, предлагающий разработчикам широкий спектр функциональных возможностей. Одной из наиболее часто используемых функций C++ является оператор разрешения области видимости , также известный как двойное двоеточие (::) . Несмотря на то, что это важная часть языка, двойное двоеточие оператор может сбивать с толку многих разработчиков, особенно тех, кто не знаком с ним.

В этом руководстве мы рассмотрим оператор двойного двоеточия (::) в C++ и как это работает в разных сценариях.

Что делает :: в C++?

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







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

В С++, оператор разрешения области видимости (::) имеет различные применения в зависимости от контекста, в котором он используется. Ниже приведены некоторые известные случаи использования этого оператора:



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

А пространство имен используется в C++ для группировки связанных функций, классов и переменных во избежание конфликтов имен. Когда вы определяете переменную или функцию в пространство имен , имя переменной или функции видно только внутри этого пространство имен .



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





Чтобы понять приведенный выше случай, рассмотрим следующий код в качестве примера:

#include <иопоток>

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

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

константа двойной ПИ '=' 3.14159 ;

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

возвращаться Икс * Икс ;

}

}

инт основной ( ) {

cout << 'Значение PI равно:' << математика :: ПИ << конец ;

cout << «Квадрат 5 это:» << математика :: квадрат ( 5 ) << конец ;

возвращаться 0 ;

}

В приведенном выше коде используется математическое пространство имен чтобы получить доступ к 'ПИ' постоянный и 'квадрат' функция с помощью оператор разрешения области видимости «::» . Затем он выводит значения на консоль.



Выход

2: Доступ к глобальной переменной в программе

Когда в программе присутствуют одинаковые имена локальной и глобальной переменных, локальная переменная может скрывать глобальную. В таких ситуациях можно использовать оператор разрешения области видимости (::) для доступа к глобальной переменной. Этот оператор позволяет нам явно ссылаться на глобальную переменную в зависимости от ее области действия.

Например, в приведенном ниже коде мы ссылались на глобальную переменную ‘а «через оператор разрешения области видимости(::) , изнутри функции, где была определена локальная переменная с тем же именем:

#include <иопоток>

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

инт а '=' пятнадцать ;

инт основной ( )

{

инт а '=' 35 ;

cout << 'Значение глобальной переменной a равно' << :: а << конец ;

cout << 'Значение локальной переменной a равно' << а << конец ;

возвращаться 0 ;

}

В приведенном выше коде переменная a, присутствующая вне основной функции, является глобальная переменная а переменная a в основной функции является локальная переменная с тем же именем, что и глобальная переменная. В операторе cout мы использовали оператор разрешения области видимости для вывода глобальной переменной. а .

Выход

3: Определите функцию вне класса

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

Вот пример кода, демонстрирующий использование оператор разрешения области видимости :

#include <иопоток>

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



класс мой класс {

публичный :

пустота моя функция ( ) ;

} ;

пустота мои занятия :: моя функция ( ) {

cout << 'Вызвана моя функция()!' ;

}

инт основной ( )

{

класс myClassObj ;

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

возвращаться 0 ;

}

В приведенном выше коде функция-член моя функция() определяется вне класса с помощью оператор разрешения области :: указать, что моя функция() принадлежит классу myClass.

Выход

4: Доступ к статическим членам класса

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

Вот пример кода, который относится к использованию оператор разрешения области видимости для такого случая:

#include <иопоток>

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

класс мой класс {

публичный :

статический инт myStatVar ;

} ;

инт мои занятия :: myStatVar '=' 5 ;

инт основной ( ) {

инт myStatVar '=' 10 ;

cout << 'Локальная переменная myStatVar: ' << myStatVar << конец ;

cout << 'Переменная класса myStatVar: ' << мои занятия :: myStatVar << конец ;

возвращаться 0 ;

}

Приведенная выше программа сначала определяет класс мои занятия со статической переменной-членом myStatVar . Затем он определяет локальную переменную с тем же именем внутри основной функции программы. Чтобы получить доступ к переменной класса, оператор разрешения области видимости (::) используется с именем класса мои занятия . Программа выводит значение обеих переменных на консоль.

Выход

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

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

#include <иопоток>

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

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

публичный :

пустота Распечатать ( ) {

cout << «Это функция печати класса Parent1». << конец ;

}

} ;

класс Родитель2 {
публичный :
пустота Распечатать ( ) {
cout << «Это функция печати класса Parent2». << конец ;
}
} ;
класс мой класс : общественный родитель1 , общественный Родитель2 {
частный :
инт на одной ;

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

Вышеприведенная программа демонстрирует использование оператор разрешения области видимости (::) различать печатные функции Родитель1 и Родитель2 когда оба класса наследуются мои занятия. Вызывая функции с помощью Родительский класс имя перед именем функции, мы можем указать, какую версию функции использовать.

Выход

Нижняя граница

оператор разрешения области видимости (::) является жизненно важным компонентом C++, используемым для доступа к именам переменных на разных уровнях области видимости. Оператор имеет различные применения, включая доступ к переменной или функции в другом пространстве имен, доступ к глобальной переменной, определение функции вне класса, доступ к статическим членам класса и использование множественного наследования. Хотя это может сбивать с толку новых разработчиков, понимание оператор разрешения области видимости (::) имеет важное значение для хорошей практики программирования.