C ++继承封闭类 - 这是一个好习惯吗?

时间:2014-10-23 21:47:49

标签: c++ class oop inheritance nested

我最近尝试在模块中设计部分代码。我的问题是如何命名并保留它,以便名称/地址对于类很容易,并告诉所有关于类的目的。第一个想法是创建名为 Foo 的接口(抽象类),然后在名称空间 Foo 中创建类,这样我就会得到如下代码:

Foo* foo = Foo::Bar();

但是我们不能创建具有相同名称的命名空间和类。所以另一种方法是将接口作为封闭类并将指定的类(它们的声明)放在其中,然后定义那些指定的类:

class A {
    public:
        void foo() = 0;

        class B;
        class C;
};

class B : public A {
    //
};

class C : public A {
    //
};

我想知道这种类和接口的设计是不是很好的做法?或者我应该使用其他东西/从不介意基类的错误命名?

Big pro 正在命名。如果 - 例如 - 我将它用作异常系统 - 我可以编写如下代码:

Exception* exception = new Exception::IllegalArgument();

而不是:

Exception::Interface* exception = new Exception::IllegalArgument();

但是我注意到还有很大的 con 。我可以这样写:

Exception::IllegalArgument::Exception::IllegalArgument::Exce... exception;

那么,你怎么看?无论是类型的无限循环,还是我应该考虑不同的策略,这是无关紧要吗?

1 个答案:

答案 0 :(得分:0)

这是一种漠不关心的做法。

我的意思是它既没有给你买那么多,也没有真正的缺点。

但是,规范只是将它们放在同一个命名空间中并完成它。

它看起来更清洁"如果你改变层次结构,至少有机会在没有太多流血事件的情况下完成它。