Рубрики

Оператор разрешения области в C ++

В C ++ оператором разрешения области видимости является :: . Он используется для следующих целей.

1) Для доступа к глобальной переменной, когда есть локальная переменная с таким же именем:

// C ++ программа, чтобы показать, что мы можем получить доступ к глобальной переменной
// используя оператор разрешения области :: когда есть локальный
// переменная с тем же именем
#include<iostream> 

using namespace std;

   

int x;  // Глобальный х

   

int main()

{

  int x = 10; // Локальный х

  cout << "Value of global x is " << ::x;

  cout << "\nValue of local x is " << x;  

  return 0;

}

Выход:

Value of global x is 0
Value of local x is 10

2) Определить функцию вне класса.

// C ++ программа, показывающая, что используется оператор разрешения области ::
// определить функцию вне класса
#include<iostream> 

using namespace std;

  

class

{

public

  

   // Только объявление

   void fun();

};

  
// Определение вне класса используя ::

void A::fun()

{

   cout << "fun() called";

}

  

int main()

{

   A a;

   a.fun();

   return 0;

}

Выход:

fun() called

3) Для доступа к статическим переменным класса.

// C ++ программа, показывающая, что :: может использоваться для доступа к статическому
// члены, когда есть локальная переменная с тем же именем
#include<iostream>

using namespace std;

   

class Test

{

    static int x;  

public:

    static int y;   

  

    // Локальный параметр 'a' скрывает члена класса

    // 'a', но мы можем получить к нему доступ, используя ::

    void func(int x)  

    

       // Мы можем получить доступ к статической переменной класса

       // даже если есть локальная переменная

       cout << "Value of static x is " << Test::x;

  

       cout << "\nValue of local x is " << x;  

    }

};

   
// В C ++ статические члены должны быть явно определены
// как это

int Test::x = 1;

int Test::y = 2;

   

int main()

{

    Test obj;

    int x = 3 ;

    obj.func(x);

   

    cout << "\nTest::y = " << Test::y;

  

    return 0;

}

Выход:

Value of static x is 1
Value of local x is 3
Test::y = 2;

4) В случае множественного наследования:
Если одно и то же имя переменной существует в двух классах предков, мы можем использовать оператор разрешения области видимости для различения.

// Использование оператора разрешения области в множественном наследовании.
#include<iostream>

using namespace std;

  

class A

{

protected:

    int x;

public:

    A() { x = 10; }

};

  

class B

{

protected:

    int x;

public:

    B() { x = 20; }

};

  

class C: public A, public B

{

public:

   void fun()

   {

      cout << "A's x is " << A::x;

      cout << "\nB's x is " << B::x;

   }

};

  

int main()

{

    C c;

    c.fun();

    return 0;

}

Выход:

A's x is 10
B's x is 20

5) Для пространства имен
Если класс с одинаковым именем существует в двух пространствах имен, мы можем использовать имя пространства имен с оператором разрешения области действия, чтобы ссылаться на этот класс без каких-либо конфликтов.

// Использование оператора разрешения области для пространства имен.
#include<iostream>

  

  

int main(){

    std::cout << "Hello" << std::endl;

  
}

Here, cout and endl belong to the std namespace.

6) Обратитесь к классу внутри другого класса:
Если класс существует внутри другого класса, мы можем использовать класс вложенности для ссылки на вложенный класс с помощью оператора разрешения области

// Использование класса разрешения области внутри другого класса.
#include<iostream>

using namespace std;

  

class outside

{

public:

      int x;

      class inside

      {

      public:

            int x;

            static int y; 

            int foo();

  

      };

};

int outside::inside::y = 5; 

  

int main(){

    outside A;

    outside::inside B;

  
}

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Оператор разрешения области в C ++

0.00 (0%) 0 votes