糟糕的C++(一) 取其精华去其糟糠

     C++诞生至今已有悠久的历史,在此期间有人为它疯狂,有人对它失望,有人望而怯之,有人却始终坚持,有人试图驯服它,有人被它的庞大吓跑。争论从来不曾消停过! 

     为什么是C?

     C是灵活的;C非常高效;C具有庞大的用户群,而且至今不衰;C有很好的移植性和稳定性。如果单纯只是C,那么我觉得很完美了。可偏偏非要在C的基础上加上很多复杂的功能。导致了C++的难。

     如果C++可以放弃对C的完全兼容,那么它远可以比现在更简单得多得多! 如果没有八种整数的支持,重载函数可以更简单。如果丢弃C语言的声明语言,C++会更简洁明确。

int (*pf) ();


我们甚至不知道它是声明还是表达式。只能依靠规定。

     一位C同事跑来对我吼道:为什么C里面的良好设计到C++里面就成了错误?

struct S
{
	...
	String str;
};

S s;
memset(&s, ...)

    如果C++不兼容C语言的struct,C++会变得简洁。

template <struct Type>
void func()
{
	...
}



你也许会说这样的写法为什么会编译不过,而这样的写法却可以:
template <class Type>
void func()
{
	...
}

    如果不是那么在意C的紧筹布局,那么我们可以在class里面放一些更多有用的内容来换取更方便的设计。比如可以很好的支持GC(这真是一个让C++程序员抓狂的玩意);比如序列化;比如反射机制等等。

    我们来看个怪异的写法:

struct S
{
};

int S = 0;
S s;	//error


    这种写法对C++来说是不合法,因为我们要去支持C 导致牵强的写法。

    C++是一个什么都想做什么都想兼容的语言。到后面发现哇~原来已经这么复杂了。复杂到连编译器支持新特性都已经很难(为什么C++0x一度延期到C++1x,还很多标准被否决掉)。

   
 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值