c++ - 将任何派生类使用的函数放在基类中?

标签 c++ inheritance base-class derived

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... */ }

};

如上例所示,将所有派生类使用的所有可能函数都放在基类中,是否存在或可能存在任何设计问题或不可预见的后果?

最佳答案

如果你想确保(强制)所有这些功能将在所有派生类中实现,你应该让它们虚拟的。否则,尝试预先确定并列出所有可能的 空体函数就没有多大意义。从你的例子来看,你似乎需要不止一层的继承。

关于c++ - 将任何派生类使用的函数放在基类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782762/

相关文章:

派生类的python构造函数

C++ STL 算法,如 'comm' 实用程序

c++ 为什么我的日期解析不是线程安全的?

c++ - 如何在 Xcode 上的 C++ 命令行应用程序中获取进程信息

python - 删除继承类Python中的类属性

typescript - 在 VUE 中,哪种共享模板和逻辑的方法更受欢迎?

c++ - FreeFileSync C++ 错误 : 'byte' is not a member of 'std'

java - 具有相同名称的函数接收不同派生类的实例

c++ - 基类构造函数错误

c# - 将其传递给基础构造函数