Разыменовывание указателя в C и в С++

Рейтинг: 0Ответов: 1Опубликовано: 25.02.2011

Смотрю на чужой код инициализации JNI в примерах из C и C++. Одна и та же строка в C и в C++ выглядит по-разному.

// C
if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_4) != JNI_OK) {

// C++
if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) {

Почему в С пишется (*vm)->GetEnv, а в C++ - vm->GetEnv?

Ответы

▲ 2Принят

Так и задумано. Для C++ предусмотрен способ для более простого вызова методов. Но этот способ не работает для простого C. Всё это сделано для упрощения вызова: не надо разыменовывать указатель и не надо передавать this-указатель (в C++ он передаётся нахаляву).

Прочтите объяснение здесь