一个对c++的批评

原创 2004年06月30日 21:37:00
继承机制
一方面是为了扩展,但是另外一方面也是限制,
父类的设计必须完美,考虑到所有子类的可能情况。
这是一个对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也可以。

好像每次都是看“你把这个工作”放在哪个部位的问题么。。

破坏性批评与建设性批评

批评是教师指出学生的错误,促使其积极改正的有效办法。而现在,仍有很多学生把批评与责骂划等号,说受了批评就是挨了一顿骂。学生对批评抵触和畏惧的原因很多,但批评者不讲究批评艺术是最主要的。 常见的表...
  • cxzhq2002
  • cxzhq2002
  • 2017年01月28日 21:15
  • 225

常见的各种人提出的理论

1、威廉·大内的Z理论(1981)   Z理论( Theory Z)是由美国日裔学者威廉·大内(一译乌契,William Ouchi)在1981年出版的《Z理论》一书中提出来的,其研究的内容为人与...
  • changyanmanman
  • changyanmanman
  • 2012年11月19日 09:38
  • 2318

管理人员如何有效应用表扬与批评进行反馈

  当你的员工付出辛勤的汗水做出成绩时,拍拍他的肩膀,对他道一声“辛苦了!”,这就是反馈!     很多情况下,我们强调工作的布置、落实、检查与总结,有些事情还要加上评比。尽管我们多数人不太喜欢评比,...
  • Drate
  • Drate
  • 2006年01月21日 09:13
  • 2108

2013.10.30 当着众人面批评一位员工

今天,一位手下员工,写架构文档的时候只给我简单画了个图,还是函数名连接函数名的。。。 虽然我们私下关系不错,但是我还是当着众人的面批评他了,我不能让其他做的好的员工心寒。 注:我不喜欢单独...
  • oShanZi1
  • oShanZi1
  • 2013年10月30日 10:18
  • 527

浙江经济是国内最健康的经济

浙江经济是国内最健康的经济 作者 : 旺才  文章来源 : 百灵社区     前些日子在《海外星云》上看到的一篇文章《浙江为什么会取代台湾?》俺认为这文章写得非常切合浙江的实际。浙江经济发达,但浙江取...
  • zhy21
  • zhy21
  • 2005年04月18日 19:42
  • 1430

System.Data.SqlClient.SqlException= "从 bcp 客户端收到一个对 colid 4 无效的列长度。"

System.Data.SqlClient.SqlException= "从 bcp 客户端收到一个对 colid 4 无效的列长度。"
  • S630730701
  • S630730701
  • 2016年07月31日 20:28
  • 943

从bcp客户端收到一个对colid 1无效的列长度

从bcp客户端收到一个对colid 1无效的列长度,我把excel的数据导入到数据库时出错。用户SqlBulkCopy类进行拷贝数据,百度以后得知是excel的文字超出了列的长度,随后我去除了文字后边...
  • HelpSystem
  • HelpSystem
  • 2012年03月08日 11:14
  • 8861

插入数据库遇到“从bcp客户端收到一个对colid x无效的列长度 ”

菜鸟一个,遇到问题自己解决,+百度
  • zyzBulus
  • zyzBulus
  • 2017年08月22日 13:52
  • 415

C++批评系列——多继承

多继承Ian Joynercber 译Eiffel和C++都提供了多继承的机制。但Java却没有,因为它认为多继承会导致许多问题的出现。不过Java提供了接口(interface)作为一种替换机制,它...
  • luckysky
  • luckysky
  • 2005年03月04日 15:21
  • 995

C++批评系列:函数重载

C++批评系列:函数重载Ian Joynercber译译者前言:要想彻底的掌握一种语言,不但需要知道它的长处有哪些,而且需要知道它的不足之处又有哪些。这样我们才能用好这门语言,避免踏入语言中的一些陷阱...
  • luckysky
  • luckysky
  • 2005年03月04日 15:20
  • 748
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个对c++的批评
举报原因:
原因补充:

(最多只允许输入30个字)