C ++继承封闭类-这是一种好习惯吗?
Posted
技术标签:
【中文标题】C ++继承封闭类-这是一种好习惯吗?【英文标题】:C++ inhereting enclosing class - is this good practice? 【发布时间】:2014-10-23 21:47:48 【问题描述】:我最近尝试在模块中设计部分代码。我的问题是如何命名并保留它,以便班级的名称/地址既容易又告诉所有有关班级目的的知识。第一个想法是创建名为 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();
但我也注意到了一个很大的骗局。我可以这样写:
Exception::IllegalArgument::Exception::IllegalArgument::Exce... exception;
那么,您对此有何看法?类型的无限循环是否可以且不介意,或者我应该考虑不同的策略?
【问题讨论】:
【参考方案1】:这是一种冷漠的做法。
我的意思是它既没有给你买那么多,也没有真正的缺点。
不过,规范只是将它们放在同一个命名空间中并完成。
它“看起来更干净”,如果你改变层次结构,至少有机会在没有太多流血的情况下完成它。
【讨论】:
好吧,所以除了创建一个命名空间并把所有相关的东西都扔进去之外,你能推荐其他类似的设计模式吗(一个基类和许多派生类?甚至是一些层次结构)?以上是关于C ++继承封闭类-这是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章