2
class tabBase
{

public:
    tabBase() { }
    virtual ~tabBase() { }

    virtual void write() {}
    virtual void read() {}
    virtual void start() {}
    virtual void stop() {}
    virtual void connect() {}
    virtual void disconnect() {}
    virtual void openFile() {}
    virtual void closeFile() {}
    virtual void searchForText() {}

};

class tcpServerTab : public tabBase
{

public:
    tcpServerTab() { /* ...code... */ }
    virtual ~tcpServerTab() { /* ...code... */ }

    virtual void write() { /* ...code... */ }
    virtual void read() { /* ...code... */ }
    virtual void start() { /* ...code... */ }
    virtual void stop() { /* ...code... */ }

};

class tcpClientTab : public tabBase
{

public:
    tcpClientTab() { /* ...code... */ }
    virtual ~tcpClientTab() { /* ...code... */ }

    virtual void write() { /* ...code... */ }
    virtual void read() { /* ...code... */ }
    virtual void start() { /* ...code... */ }
    virtual void stop() { /* ...code... */ }

    virtual void connect() { /* ...code... */ }
    virtual void disconnect() { /* ...code... */ }

};

class plainTextTab : public tabBase
{

public:
    plainTextTab() { /* ...code... */ }
    virtual ~plainTextTab() { /* ...code... */ }

    virtual void openFile() { /* ...code... */ }
    virtual void closeFile() { /* ...code... */ }
    virtual void searchForText() { /* ...code... */ }

};

像上面的例子一样,将所有可能的函数放置在基类中的任何派生类中是否存在或可能存在任何设计问题或不可预见的后果?

4

1 回答 1

2

如果您想确保(强制)所有这些功能将在所有派生类中实现,您应该将它们设为虚拟。否则,试图用空体预先确定和列出所有可能的函数是没有多大意义的。从您的示例来看,您似乎需要不止一级的继承。

于 2012-01-09T00:44:22.233 回答