C++ 指向 class 或普通变量的指针

C++ Pointer to a class or an ordinary variable

我正在处理这个 C++ 项目,它使用了一个没有很好记录的开源库,我遇到了这个代码块:

IDataObserver* GetDataObserver()
    {
        return &mFDO;
    }

还有这个对象创建:

ICommandAcceptor* mpCommandAcceptor;

我发现 IDataObserver 是这个库中的一个 class。我读过一个指向 class 的指针和一个指向内存位置和值的指针。但是我怎么称呼这个 "IDataObserver* GetDataObserver()" ?它甚至是一个指针吗?这是否意味着 GetDataObserver() 是 class 的一个实例或什么?在创建对象时,mpCommandAcceptor 对象是从一个名为 "ICommandAcceptor" 的 class 创建的,但是 * 符号是怎么回事?谢谢

我假设通过询问 what is GetDataObserver() ,您的意思是 return 。

该函数是 return 类型 IDataObserver* ,即指向 class IDataObserver.

对象的指针
ICommandAcceptor* mpCommandAcceptor;

此处,mpCommandAcceptor 是指向 ICommandAcceptor 类型变量的指针。
考虑 int* i,这意味着 i 是指向 int 类型变量的指针。
在上面的例子中,它是一个指向类型 class ICommandAcceptor.

的实例的指针

GetDataObserver() 函数不 return 指向 class 的指针;它 return 是指向类型 class IDataObserver 的实例的指针,是 class.
的对象 在这种情况下,API 函数是 returning class.

的一个实例
IDataObserver mFDO ; // uses the constructor that instantiates the class.
IDataObserver* GetDataObserver(){
    return &mFDO;
}
int main() {
    IDataObserver* test = GetDataObserver(); //Calls the global function to get an instance of the data observer.
    return 0;
}

GetDataObserver() 只是一个函数,用于return 对象mFDO 的对象指针。 mpCommandAcceptor 是 ICommandAcceptor 的对象指针值。