В этом руководстве мы рассмотрим оператор двойного двоеточия (::) в 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++, используемым для доступа к именам переменных на разных уровнях области видимости. Оператор имеет различные применения, включая доступ к переменной или функции в другом пространстве имен, доступ к глобальной переменной, определение функции вне класса, доступ к статическим членам класса и использование множественного наследования. Хотя это может сбивать с толку новых разработчиков, понимание оператор разрешения области видимости (::) имеет важное значение для хорошей практики программирования.