что такое «класс» в «классе DataType * Variable» в примере игры Unreal Engine Shooter

Я недавно скачал Shooter Game для Unreal 4 Engine, и я просто пытаюсь разобрать C ++, но мой C ++ не лучший, я замечаю переменную под названием

class AShooterCharacter* MyPawn;

Установить в заголовочном файле для ShooterWeapon.h

Я пытаюсь понять, что class часть есть.

[Редактировать] Я заметил, что люди отклонили мой вопрос, поэтому я изменил его на один вопрос. Я надеюсь, что люди готовы помочь, а не унижать мой вопрос. Там нет такой вещи, как глупый вопрос:) … Особенно в программировании

10

Решение

Если AShooterCharacter уже в области видимости, то это, вероятно, ничего не значит.

class AShooterCharacter* MyPawn;
// ^ the same as just:
// AShooterCharacter* MyPawn;

В C, когда вы называете типы структур, вы должны использовать struct ключевое слово:

struct Foo
{
int x, y, z;
};

struct Foo obj;

В C ++ вам не нужно этого делать, потому что Foo становится именованным типом самостоятельно:

Foo obj;

Но ты все еще Можно записывать struct Foo если хотите.

То же самое относится и к classпросто как следствие того, как определяется грамматика и семантика языка.

Есть только два раза, когда это имеет значение.

Использование 1: устранение неоднозначности (сортов)

Вы можете использовать его, чтобы указать, что вы хотите ссылаться на имя типа в области видимости, когда оно скрыто другим именем, например:

class Foo {};

int main()
{
const int Foo = 3;

// Foo x;     // invalid because `Foo` is now a variable, not a type
class Foo x;  // a declaration of a `Foo` called `x`;
}

Но если вам это «нужно», то, на мой взгляд, у вас есть большие проблемы!

Использование 2: Форвардная декларация

В противном случае это то же самое, что сделать это:

class Foo;   // a forward declaration
Foo* x;

Возможно, он сохраняет строку кода, если вы собираетесь объявить тип вперед и сразу же объявить указатель на объект этого типа.

Это не обычный стиль, хотя.

7

Другие решения

Это так называемая «предварительная декларация».

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

Эта функция особенно полезна при нарушении циклических зависимостей между заголовочными файлами.

Вы можете убедиться, что это так, проверив AShooterCharacter не определен ни в одном из файлов, включенных ShooterWeapon.h,

1

Давайте дадим небольшое введение (из Википедия )

Класс — это пользовательский тип или структура данных, объявленная с ключевым словом
класс, который имеет данные и функции (также называемые методами)
как его члены
чей доступ регулируется тремя спецификаторами доступа private,
защищенный или общедоступный (по умолчанию доступ к членам класса
частный). Класс (объявленный с ключевым словом class) в C ++ отличается от
структура (объявлена ​​с ключевым словом struct), как по умолчанию, члены
частные в классе, в то время как они являются публичными в структуре. Частный
члены не доступны за пределами класса; к ним можно получить доступ
только через методы класса. Публичные участники формируют
интерфейс к классу и доступны за пределами класса. Инстансы
из этих типов данных известны как объекты и могут содержать член
переменные, константы, функции-члены и перегруженные операторы
определяется программистом.

Класс используется для реализации объектно-ориентированного программирования (ООП)

Поставив ключевое слово class перед идентификатором он становится типом данных (например, int или char), но хорошая часть заключается в том, что вы можете решить, что в нем присутствует. Например

class A
{
int num;
char ch;
public:
void getvalue ( )
{
std::cin >> num >> ch ;
}
void disp ( )
{
std::cout << num << std::endl << ch ;
}
};

Сейчас A это класс, и когда вы делаете

A myobject ;

myobject становится объектом класса A то есть он становится типом данных, который может хранить int а также char значения (вы можете добавить любые другие типы данных, такие как float).

И вы можете вызвать функцию getvalue() принять значения для num а также ch а затем выведите значение как

myobject.getvalue();
myobject.disp()
0
По вопросам рекламы [email protected]