我最近下载了 Unreal 4 Engine 的射击游戏,我只是想把 c++ 分开,但我的 c++ 不是最好的,我注意到一个名为
class AShooterCharacter* MyPawn;
在头文件中设置为ShooterWeapon.h
我试图了解这class
部分是什么。
[编辑] 我注意到人们拒绝了我的问题,所以我将其更改为一个问题。我希望人们愿意帮助而不是贬低我的问题。没有愚蠢的问题:)...尤其是在编程中
我最近下载了 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
.
让我们做一个小介绍(来自维基百科)
类是用关键字声明的用户定义类型或数据结构,类具有数据和函数(也称为方法)作为其访问权限由私有、受保护或公共三个访问说明符控制的成员(默认情况下,对类成员的访问是私有的)。C++ 中的类(用关键字 class 声明)与结构(用关键字 struct 声明)不同,默认情况下,成员在类中是私有的,而在结构中是公共的。私有成员在类外是不可访问的;它们只能通过类的方法访问。公共成员形成类的接口,并且可以在类外访问。这些数据类型的实例称为对象,可以包含程序员定义的成员变量、常量、成员函数和重载运算符。
一个类用于实现面向对象编程(OOP)
通过将关键字放在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()