Я недавно скачал Shooter Game для Unreal 4 Engine, и я просто пытаюсь разобрать C ++, но мой C ++ не лучший, я замечаю переменную под названием
class AShooterCharacter* MyPawn;
Установить в заголовочном файле для ShooterWeapon.h
Я пытаюсь понять, что class
часть есть.
Если 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
просто как следствие того, как определяется грамматика и семантика языка.
Есть только два раза, когда это имеет значение.
Вы можете использовать его, чтобы указать, что вы хотите ссылаться на имя типа в области видимости, когда оно скрыто другим именем, например:
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`;
}
Но если вам это «нужно», то, на мой взгляд, у вас есть большие проблемы!
В противном случае это то же самое, что сделать это:
class Foo; // a forward declaration
Foo* x;
Возможно, он сохраняет строку кода, если вы собираетесь объявить тип вперед и сразу же объявить указатель на объект этого типа.
Это не обычный стиль, хотя.
Это так называемая «предварительная декларация».
Он позволяет вам указать указатель на имя класса / структуры, чтобы вам не приходилось включать конкретный заголовочный файл, определяющий этот класс / структуру.
Эта функция особенно полезна при нарушении циклических зависимостей между заголовочными файлами.
Вы можете убедиться, что это так, проверив AShooterCharacter
не определен ни в одном из файлов, включенных ShooterWeapon.h
,
Давайте дадим небольшое введение (из Википедия )
Класс — это пользовательский тип или структура данных, объявленная с ключевым словом
класс, который имеет данные и функции (также называемые методами) как его члены
чей доступ регулируется тремя спецификаторами доступа 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()