Если 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;
Возможно, это сэкономит строку кода, если вы собираетесь пересылать объявление типа и немедленно объявлять указатель на объект этого типа.
Однако это не общий стиль.
person
Lightness Races in Orbit
schedule
11.04.2015
class
необязательно. - person πάντα ῥεῖ   schedule 11.04.2015class
(struct
может защищаться как C-совместимость). - person Lightness Races in Orbit   schedule 12.04.2015