C++“类名*”是类指针吗?

Chr*_*mar 3 pointers class c++11 unreal-engine4

我在看一个虚幻的教程时遇到了这行代码:

class UStaticMeshComponent*  Pickup;
Run Code Online (Sandbox Code Playgroud)

这是一个转发声明。我学习c++有一段时间了,以前没有遇到过这样的事情。我了解指针和引用,但我从未见过这种格式:类名*。我们正在创建一个指向另一个类的类指针吗?我尝试搜索后跟 * 的类名,但出现的唯一结果是有关数据类型和指针的。

public:
    APickUp ();

    virtual void BeginPlay () override;

    virtual void tick ( float DeltaSeconds );

private:
    class UStaticMeshComponent* Pickup;
Run Code Online (Sandbox Code Playgroud)

bol*_*lov 5

class UStaticMeshComponent*  Pickup;
Run Code Online (Sandbox Code Playgroud)

这声明了类型并声明了类型指针的class UStaticMeshComponent变量。所以上面的代码或多或少相当于:PickupUStaticMeshComponent

class UStaticMeshComponent;
UStaticMeshComponent*  Pickup;
Run Code Online (Sandbox Code Playgroud)

因为此时你还没有定义UStaticMeshComponent(只是声明),UStaticMeshComponent被认为是不完整类型。对于不完整的类型,您可以执行一些操作。其中之一是声明指向它们的指针。