一个对c++的批评
来源:互联网 发布:数据泄露调查报告 编辑:程序博客网 时间:2024/04/27 17:24
继承机制
一方面是为了扩展,但是另外一方面也是限制,
父类的设计必须完美,考虑到所有子类的可能情况。
这是一个对c++的批判。
认真考虑一下这个问题,这种情况只有在类关系交错的时候才
会发生,情况的出现往往是这样吧:
class A{public fun1(){}}; //father
class B:public A{};
class C:public A{};
... //some children
class framework
{
USE_A(A*){..};
};
至此,A的设计完全符合framework的需要。。。
现在出现framework2,要使用class A的一个继承,class X
其中需要用到一个设计framework时候
没有遇到过的功能,也就是说,这个功能class A并不提供,
或者说没有对应的虚函数,那么现在的选择要么是
frame2work放弃对A系列类的通用性,要么放弃那个功能,
要么。。。为A增加新的虚拟函数。。。
继承机制
一方面是为了扩展,但是另外一方面也是限制,
父类的设计必须完美,考虑到所有子类的可能情况。
这是一个对c++的批判。
认真考虑一下这个问题,这种情况只有在类关系交错的时候才
会发生,情况的出现往往是这样吧:
class A{public fun1(){}}; //father
class B:public A{};
class C:public A{};
... //some children
class framework
{
USE_A(A*){..};
};
至此,A的设计完全符合framework的需要。。。
现在出现framework2,要使用class A的一个继承,class X
其中需要用到一个设计framework时候
没有遇到过的功能,也就是说,这个功能class A并不提供,
或者说没有对应的虚函数,那么现在的选择要么是
frame2work放弃对A系列类的通用性,要么放弃那个功能,
要么。。。为A增加新的虚拟函数。。。
这个就是被批判的父类设计需要“预测将来”的例子。。。
(我自己这么想的,可能不是)
就我个人看呢,这个问题是出在“强行把非通用的情况整合到
通用情况”,本身就是一个完美主义的自虐。。。
归根又是一个“动态类型判别问题”罢了。。。
这个问题说到底又是“层次问题”,如果用虚拟机当然
可以搞定,多增加一个层次罢了,
如果在c++上,我们同样增加一个层次比如为framework2
写出两个类,用子类去对待特殊的X,这个问题显然也可以解决。
再凶悍一点,用visitor方法把类的判别工作仍给linker也可以。
好像每次都是看“你把这个工作”放在哪个部位的问题么。。
这个就是被批判的父类设计需要“预测将来”的例子。。。
(我自己这么想的,可能不是)
就我个人看呢,这个问题是出在“强行把非通用的情况整合到
通用情况”,本身就是一个完美主义的自虐。。。
归根又是一个“动态类型判别问题”罢了。。。
这个问题说到底又是“层次问题”,如果用虚拟机当然
可以搞定,多增加一个层次罢了,
如果在c++上,我们同样增加一个层次比如为framework2
写出两个类,用子类去对待特殊的X,这个问题显然也可以解决。
再凶悍一点,用visitor方法把类的判别工作仍给linker也可以。
好像每次都是看“你把这个工作”放在哪个部位的问题么。。
一方面是为了扩展,但是另外一方面也是限制,
父类的设计必须完美,考虑到所有子类的可能情况。
这是一个对c++的批判。
认真考虑一下这个问题,这种情况只有在类关系交错的时候才
会发生,情况的出现往往是这样吧:
class A{public fun1(){}}; //father
class B:public A{};
class C:public A{};
... //some children
class framework
{
USE_A(A*){..};
};
至此,A的设计完全符合framework的需要。。。
现在出现framework2,要使用class A的一个继承,class X
其中需要用到一个设计framework时候
没有遇到过的功能,也就是说,这个功能class A并不提供,
或者说没有对应的虚函数,那么现在的选择要么是
frame2work放弃对A系列类的通用性,要么放弃那个功能,
要么。。。为A增加新的虚拟函数。。。
继承机制
一方面是为了扩展,但是另外一方面也是限制,
父类的设计必须完美,考虑到所有子类的可能情况。
这是一个对c++的批判。
认真考虑一下这个问题,这种情况只有在类关系交错的时候才
会发生,情况的出现往往是这样吧:
class A{public fun1(){}}; //father
class B:public A{};
class C:public A{};
... //some children
class framework
{
USE_A(A*){..};
};
至此,A的设计完全符合framework的需要。。。
现在出现framework2,要使用class A的一个继承,class X
其中需要用到一个设计framework时候
没有遇到过的功能,也就是说,这个功能class A并不提供,
或者说没有对应的虚函数,那么现在的选择要么是
frame2work放弃对A系列类的通用性,要么放弃那个功能,
要么。。。为A增加新的虚拟函数。。。
这个就是被批判的父类设计需要“预测将来”的例子。。。
(我自己这么想的,可能不是)
就我个人看呢,这个问题是出在“强行把非通用的情况整合到
通用情况”,本身就是一个完美主义的自虐。。。
归根又是一个“动态类型判别问题”罢了。。。
这个问题说到底又是“层次问题”,如果用虚拟机当然
可以搞定,多增加一个层次罢了,
如果在c++上,我们同样增加一个层次比如为framework2
写出两个类,用子类去对待特殊的X,这个问题显然也可以解决。
再凶悍一点,用visitor方法把类的判别工作仍给linker也可以。
好像每次都是看“你把这个工作”放在哪个部位的问题么。。
这个就是被批判的父类设计需要“预测将来”的例子。。。
(我自己这么想的,可能不是)
就我个人看呢,这个问题是出在“强行把非通用的情况整合到
通用情况”,本身就是一个完美主义的自虐。。。
归根又是一个“动态类型判别问题”罢了。。。
这个问题说到底又是“层次问题”,如果用虚拟机当然
可以搞定,多增加一个层次罢了,
如果在c++上,我们同样增加一个层次比如为framework2
写出两个类,用子类去对待特殊的X,这个问题显然也可以解决。
再凶悍一点,用visitor方法把类的判别工作仍给linker也可以。
好像每次都是看“你把这个工作”放在哪个部位的问题么。。
- 一个对c++的批评
- 对线程模型的批评
- 对CSDN网站的批评和忠告!
- 对电骡(eMule)协议的几个批评
- 学习笔记:关于对下属的批评和赞扬
- Opera 对 IE8 的批评是一种什么心理?
- 是时候结束对IE6的批评了
- 个人对指针的理解,欢迎大家批评
- 批评的力量
- 善意的批评
- 善意的批评
- 善意的批评
- 收到批评的开心
- 对一个C程序的认识
- 批评
- 批评
- D3D顶点混合时FVF的一些问题以及对微软的一些批评
- 因《C程序设计伴侣》的争执,谈谭浩强《C程序设计》的批评
- 用C++实现委托
- abstract类的定义及final的用法!
- 人生感悟第一篇章
- ODBC的多线程应用
- 全文检索
- 一个对c++的批评
- c++的streaming
- packet类的一些思路
- 播放器的。。。使用
- 配置adhoc
- 右键问题
- 첨으루 올라오네.ㅋㅋㅋ
- 硅谷的故事:关于硅谷的学术研究
- audio streaming的项目总结