您的位置:首页 > 编程语言 > C语言/C++

感悟我的C++的设计思想的悲哀

2011-12-29 13:00 211 查看
一直使用C++的类进行编程,设计的类构造方法和析构方法一直是公有的,说实话,简直就是把他当一个结构体来使用。当然也会使用虚函数特性、继承等特性。但是对其属性及方法设置的访问权限重来没有思考过,为何如此设计。理解了这些,就是一种设计思想,一种架构的思想,感叹自己知识不够的时候,也算又学了一招吧。

下面的几个特性引起了我的思考:

1。构造函数设计为保护的,表示这个类是用来帮助子类构造接口的。

2。构造函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来创建一个该对象。

3。析构函数设计为虚函数,表示这个类可以用它的引用或指针来管理子类的生命周期。

4。析构函数设计为保护的,表示这个类的生命周期只能由子类来管理。

5。析构函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来销毁一个该对象。

6。保护继承,表示子类需要父类的接口来帮助子类内部的实现,并利用父类的接口来提供面向孙子类的接口(一般都是虚函数)。

7。私有继承,表示子类需要父类的接口来帮助子类内部的实现,2者间的耦合可谓非常小,不过父类如果有数据成员或虚函数会影响子类的二进制结构。

8。隐藏父类的公有非虚函数,但是子类方法的实现中调用了父类的同名方法并保证前置后置条件不变,表示子类是一个父类的扩展(is-a)。

9。隐藏父类的公有非虚函数,但是子类方法的实现中不调用父类的同名方法,表示子类是一个父类的变形。

10。覆盖父类的虚函数,但是子类方法的实现中调用了父类的同名方法并保证前置后置条件不变,表示子类是一个父类的运行时升级(is-a)。

11。覆盖父类的虚函数,但是子类方法的实现中不调用父类的同名公有/保护方法,表示子类是一个父类的运行时变形(行为不可控,恶劣的设计)。

12。虚函数设计为保护的,表示该类的内部实现可以在运行时变形。

13。虚函数设计为私有的,表示该类的子类的实现细节和父类无关,父类不能对自己的实现细节做任何假设和约束(如果要保证安全的行为,父类和子类必须强耦合)。一个典型的例子是返回类名字。

14。虚函数设计为公有的,表示该类的接口可以在运行时变形(行为不可控,恶劣的设计)。

15。拥有swap成员函数,表示该类(有非常大可能性)使用了代理模式管理对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: