创建抽象类c ++的对象

时间:2017-10-21 10:23:45

标签: c++

在我的项目中,我有IAcquirer.h个文件,文件内容如下所示

class IAcquirer {

        public:
            IAcquirer() {}
            virtual ~IAcquirer() {}
            virtual int initAcquirer(std::string ) = 0;
            virtual int processTransactionToHost(const transaction::Transaction &tr, transaction::TransactionDataContainer &txnDataContainer) =0;
            virtual int connect(bool) =0;
            virtual int disconnect(void) =0;
        };

现在在另一个名为system.cpp的文件中,创建了类IAcquirer的对象

boomer::host::IAcquirer *pAcquirer;
pAcquirer->processTransactionToHost(****,***);

但是根据我的理解,我们无法创建抽象类的对象,现在该对象正在其他文件中创建

1 个答案:

答案 0 :(得分:3)

您的理解是正确的,您无法创建抽象类的对象。

但是,您可以创建从抽象类派生的对象。这些对象与它们的基本抽象类兼容,并且可以通过指针或作为抽象基类的引用来操作。

例如,这是有效的:

class RealAcquirer : public IAcquirer {
    virtual int initAcquirer(std::string ) {
        cout << "hello" << endl;
        return 0;
    }
    ... // Other pure virtual member functions implememted here
};

IAcquirer *make() {
    return new RealAcquirer();
}

一旦获得指向IAcquirer的指针,就可以通过它调用任何IAcquirer的成员函数,包括在派生类中重写的纯虚拟成员函数。