Доброго времени суток!
При "раскуривании" чужих исходников столкнулся вот с этим:
...
int n[4];
...
n[1]=::n[1]; n[2]=::n[2]; n[3]=::n[3];
Что значит оператор "::" в данном контексте? ООП в коде не используется. Так что оператором разрешения области видимости для функции-мемебра класса это быть не может. А в других случаях я этот оператор не встречал и тем более не использовал.
Здравствуйте, Lord Carlsberg, Вы писали:
LC>Доброго времени суток!
LC>При "раскуривании" чужих исходников столкнулся вот с этим:
LC>LC>...
LC>int n[4];
LC>...
LC>n[1]=::n[1]; n[2]=::n[2]; n[3]=::n[3];
LC>
LC>Что значит оператор "::" в данном контексте? ООП в коде не используется. Так что оператором разрешения области видимости для функции-мемебра класса это быть не может. А в других случаях я этот оператор не встречал и тем более не использовал.
int n[4];
void f()
{
int n[4];
n[1]=::n[1]; n[2]=::n[2]; n[3]=::n[3];
}
Слева от равно — локальный объект функции, справа — глобальный.
Здравствуйте, remark, Вы писали:
R>Слева от равно — локальный объект функции, справа — глобальный.
R>
Ой, (нецензурно).

Автор, надеюсь уже мертв?!
Здравствуйте, Lord Carlsberg, Вы писали:
LC>Доброго времени суток!
LC>При "раскуривании" чужих исходников столкнулся вот с этим:
LC>LC>...
LC>int n[4];
LC>...
LC>n[1]=::n[1]; n[2]=::n[2]; n[3]=::n[3];
LC>
LC>Что значит оператор "::" в данном контексте? ООП в коде не используется. Так что оператором разрешения области видимости для функции-мемебра класса это быть не может. А в других случаях я этот оператор не встречал и тем более не использовал.
Таким образом используются анонимные namespace, т/е подобно std:: только вместо std ничего
из примера видно.
#include <iostream>
using namespace std;
namespace
{
int a, b, c;
};
int main( int argc, char **argv ) {
::a = 1;
::b = 2;
::c = 3;
int a = 3, b = 4, c = 5;
cout << "::a = " << ::a << endl;
cout << " a = " << a << endl;
return 0;
}