百科问答小站 logo
百科问答小站 font logo



现在快2022年了,c++为什么还要实现(.cpp)和声明(.h)分开? 第1页

  

user avatar   pansz 网友的相关建议: 
      

因为 C++ 牵扯面更广,改起来更麻烦。

很多语言其实都有一个事实上的实现标准,然后别人都得兼容它,委员会的话语权就相对比较有限。

比如 Python 有一个 CPython 作为事实标准,作者想改那就改了,然后在文档里边体现一句,其它的 python 实现基本都得考虑与它兼容。

比如 Java 无论怎么改,都还是要以 sun 的那个为兼容性基础,不与它兼容的都是异端。那么只要它改了就大家都跟着改就行。

C#也是,基本只有微软的那一份实现,那么,微软想怎么改怎么改,就算有其它的开源实现什么的,肯定只能是跟它兼容。

C++就不一样,有非常多的厂商,独立做出了非常多的不同的实现。究竟听谁的呢?谁也不服谁,那么结果就只能是,这些厂商的技术代表,以及C++作者等人,联合起来谈判,哪些特性要加,哪些特性不加。。。而这样不可避免的就要吵架。


C++头文件分开这种事,究竟算是一个bug还是一个feature,目前已经各有各的说法,莫衷一是。

但从个人的角度,这确实是一个问题。代码只写一份实现,由编译器自动推导出声明部分或许更合适,程序员需要手动维护实现与声明确实会非常繁琐。要想从语言层面彻底解决这个问题,难度非常大,所以C++的模块才会难产那么多年。但愿,随着模块功能的增加,以后能逐渐解决这个问题吧。


user avatar   enzojz 网友的相关建议: 
      

因为你的编译器需要能够尽量编译5年前,10年前,20年前甚至30年前的代码

还有C++20的module应该接解了这个问题了




  

相关话题

  大一下要学C++,电脑安装不上net4.0,有什么在线编程网站可以尽可能替代VS,拿来练习。? 
  非计算机专业自学C++,有什么书籍推荐? ? 
  为什么读取连续内存没有比不连续的效率更高? 
  是 C++ 的发展进入了邪路,还是我写代码的姿势不正确? 
  python是用C实现的,Java是用C++实现的,那为什么不直接用C或C++呢? 
  如何编写异常代码?比如处理bad-alloc的时候,是不是应该先销毁当前资源? 
  c++ 中明明有vector了为什么还要有stack? 
  如何看待 .NET Native,真能达到 C++ 的性能、C# 的生产效率吗? 
  如何滴水不漏的学完C语言? 
  C语言指针难吗?如何看待数学大v认为指针比范畴论还难? 

前一个讨论
如何评价「上海轨道交通俱乐部」与「地铁族」论坛?
下一个讨论
周冠宇 F1 测试两天跑了 277 圈,个人最快圈速排名第五,如何评价这一成绩?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利