это переменная или функция - PullRequest
2 голосов
/ 31 декабря 2011

Я только что просматривал реализацию алгоритма не локальных средств через Google (спасибо Google за поиск кода) и наткнулся на эту функцию-зеркало.

template<typename T,typename U,bool N>
inline int
boundaryExpansion::helperBase<T,U,N>::mirror(const int src,
                                               const int size,
                                               const int last) const {
  const int32 alpha(src%size);
  if (alpha>=0) {
    return (((src/size) & 0x00000001) != 0) ? last-alpha : alpha;
  }
  return (((src/size) & 0x00000001) == 0) ? -alpha-1 : size+alpha;
}

И строка, которая меня интересует, такова:

const int32 alpha(src%size);

Что же здесь за альфа?Функция или переменная?Что означает этот синтаксис?Это объявление переменной?

Ответы [ 2 ]

4 голосов
/ 31 декабря 2011

Это объявление переменной. Декларация формы:

type variablename = value;

по существу эквивалентно:

type variablename(value);

Это тот случай, независимо от того, что такое type - будь то пользовательский класс или встроенный тип. Обратите внимание, что обратное не всегда так: синтаксис = требует наличия доступного конструктора копирования.

По аналогичным причинам вы можете приводить арифметические типы, используя синтаксис конструктора, например: x = int(42.0);

3 голосов
/ 31 декабря 2011

Это объявление переменной, и оно эквивалентно этому:

const int32 alpha = src%size;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...