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

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

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

1。构造函数设计为保护的,表示这个类是用来帮助子类构造接口的。
2。构造函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来创建一个该对象。
3。析构函数设计为虚函数,表示这个类可以用它的引用或指针来管理子类的生命周期。
4。析构函数设计为保护的,表示这个类的生命周期只能由子类来管理。
5。析构函数设计为私有的,表示这个类是用来集合静态方法的,可以用公有静态方法来销毁一个该对象。
6。保护继承,表示子类需要父类的接口来帮助子类内部的实现,并利用父类的接口来提供面向孙子类的接口(一般都是虚函数)。
7。私有继承,表示子类需要父类的接口来帮助子类内部的实现,2者间的耦合可谓非常小,不过父类如果有数据成员或虚函数会影响子类的二进制结构。
8。隐藏父类的公有非虚函数,但是子类方法的实现中调用了父类的同名方法并保证前置后置条件不变,表示子类是一个父类的扩展(is-a)。
9。隐藏父类的公有非虚函数,但是子类方法的实现中不调用父类的同名方法,表示子类是一个父类的变形。
10。覆盖父类的虚函数,但是子类方法的实现中调用了父类的同名方法并保证前置后置条件不变,表示子类是一个父类的运行时升级(is-a)。
11。覆盖父类的虚函数,但是子类方法的实现中不调用父类的同名公有/保护方法,表示子类是一个父类的运行时变形(行为不可控,恶劣的设计)。
12。虚函数设计为保护的,表示该类的内部实现可以在运行时变形。
13。虚函数设计为私有的,表示该类的子类的实现细节和父类无关,父类不能对自己的实现细节做任何假设和约束(如果要保证安全的行为,父类和子类必须强耦合)。一个典型的例子是返回类名字。
14。虚函数设计为公有的,表示该类的接口可以在运行时变形(行为不可控,恶劣的设计)。
15。拥有swap成员函数,表示该类(有非常大可能性)使用了代理模式管理对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值