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



C++ 实现接口与实现分离后,文件变得更多了,到底有什么好处? 第1页

  

user avatar   yao-dong-27 网友的相关建议: 
      

用四个文件没必要,三个就可以

Person.h, PersonImpl.h, Person.cpp

其中Person.h是暴露给外部的公共头文件,PersonImpl.h是内部头文件对外不可见,建议分两个目录存放

Person.cpp里面同时包含 class Person和class PersonImpl的实现。

这样做的好处是 :

一,保持二进制兼容,公共头文件里面只有接口定义,而不包括实现,即使实现部分有改变不影响接口,比如增删改类成员变量,不会导致class的sizeof变化或者内存layout的变化

二,提升编译速度,小项目当然感觉不到,起码50万行以上的项目才会比较明显,这个结论是非常确定的,不要随便质疑前辈的智慧,如果你确信项目未来代码规模会比较大,那么相信照着做就好了。

三,方便未来重构,接口和实现分离,即使大的架构改动,原有的接口代码改动小,容易平滑过度。


user avatar   pansz 网友的相关建议: 
      

开局一张图,剩下全靠猜?这个没法评价。

从软件的角度虽然我能想出两三种导致这个现象的原因,但非正式发布的产品出现任何问题都是常见现象。盲人摸象的评价没有必要。

跟11代没差别,这个肯定是违背常识的,要知道11代i9只有16线程,12代i9有24线程,24线程超越16线程并不需要多么高超的优化技巧。

调度优化的主要难题是当我们只需要少量线程运作的时候究竟把这个线程安排在哪个核心。

然而,对于全核心全线程同时计算的场景来说,反正都是全核心上场,根本不需要什么优化,谁来都是全核心工作。

如果这个软件能把所有核心用满的话,没道理性能不变。所以肯定有某个环节出了问题。正式版本再说吧。




  

相关话题

  为什么程序员大多成了感情的接盘侠,或者婚姻的接盘侠? 
  C++ 实现接口与实现分离后,文件变得更多了,到底有什么好处? 
  有没有什么工具可以帮助理解源代码的? 
  将记忆保存在电脑上,肉体坏死的人,算死亡了吗? 
  memcpy比循环赋值快吗?为什么? 
  有哪些程序员特有的习惯? 
  c++程序员怎么搭建一个完整的个人网站? 
  计算机视觉顶级会议论文中比较适合初学计算机视觉的人做的复现实验有哪些? 
  有哪些值得学习的国内 c++ 开源项目? 
  快奔四的人了,开始学C++,是否太迟了? 

前一个讨论
在中国程序员能不能干一辈子?
下一个讨论
如何评论陈一佳称中国人不该吃海鲜?





© 2024-12-25 - tinynew.org. All Rights Reserved.
© 2024-12-25 - tinynew.org. 保留所有权利