Стандартный оператор в нестандартном месте
От: Lord Carlsberg Россия  
Дата: 26.07.07 11:13
Оценка:
Доброго времени суток!
При "раскуривании" чужих исходников столкнулся вот с этим:
...
int n[4];
...
n[1]=::n[1]; n[2]=::n[2]; n[3]=::n[3];

Что значит оператор "::" в данном контексте? ООП в коде не используется. Так что оператором разрешения области видимости для функции-мемебра класса это быть не может. А в других случаях я этот оператор не встречал и тем более не использовал.
Re: Стандартный оператор в нестандартном месте
От: remark Россия http://www.1024cores.net/
Дата: 26.07.07 11:17
Оценка: 1 (1)
Здравствуйте, 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];
}


Слева от равно — локальный объект функции, справа — глобальный.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Стандартный оператор в нестандартном месте
От: Аноним  
Дата: 26.07.07 12:46
Оценка: +2 :))
Здравствуйте, remark, Вы писали:

R>Слева от равно — локальный объект функции, справа — глобальный.

R>
Ой, (нецензурно). Автор, надеюсь уже мертв?!
Re: Стандартный оператор в нестандартном месте
От: codelord  
Дата: 27.07.07 05:29
Оценка:
Здравствуйте, 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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.