Не могу получить контекст холста

Поскольку для вызывающего нет никакой разницы, и нет четкого способа отличить вызов функции с параметром const верхнего уровня и без него, правила языка игнорируют consts верхнего уровня. Это означает, что эти два

void foo(const int);
void foo(int);

рассматриваются как одно и то же объявление. Если вы должны были предоставить две реализации, вы получите ошибку с множественным определением.

Существует различие в определении функции с верхним уровнем const. В одном вы можете изменить свою копию параметра. В другом вы не можете. Вы можете увидеть его как деталь реализации. Для вызывающего нет никакой разницы.

// declarations
void foo(int);
void bar(int);

// definitions
void foo(int n)
{
  n++;
  std::cout << n << std::endl;
}

void bar(const int n)
{
  n++; // ERROR!
  std::cout << n << std::endl;
}

Это аналогично следующему:

void foo()
{
  int = 42;
  n++;
  std::cout << n << std::endl;
}

void bar()
{
  const int n = 42;
  n++; // ERROR!
  std::cout << n << std::endl;
}
0
задан Danil Speransky 30 July 2012 в 16:58
поделиться