wing_wang08 Ответов: 1

Почему одна и та же функция работает с const или без него ?


я нашел код ниже для OpenCV 2.4.13

------------------------ядро.ГЭС---------------------------------
1920: uchar* ptr(int i0=0);
const uchar* ptr(int i0=0) const;

шаблон&ЛТ;внутреннее п> Учар* ПТР(пост ВМК&ЛТ;инт п&ГТ;&амп; в IDx);
шаблон&ЛТ;внутреннее п> строительства Учар* ПТР(пост ВМК&ЛТ;инт п&ГТ;&амп; в IDx) const и;
------------------------------------------------------------------
существует два объявления для одной и той же функции и шаблона uchar* ptr(), с const и без него;
как компилятор справится с этим? зачем нужно писать эти две версии?

Что я уже пробовал:

how compiler will handle this? why need write these two version?

1 Ответов

Рейтинг:
2

Jochen Arndt

Компилятор выбирает версию, соответствующую контексту:

// The const version is used here
uchar c = *var.ptr();
const uchar *p = var.ptr();

// The non const version is used here
*var.ptr() = c;
uchar *p = var.ptr();

На самом деле нет необходимости предоставлять const версия, но это рекомендуется, хороший стиль и предотвращает непреднамеренное изменение значений там, где это проверяется во время компиляции:
// The const version is used here
const uchar *p = var.ptr();
// Will throw a compiler error
*p = c;