百科问答小站 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++23网络库的争论,大家有什么看法? 
  写代码应该本着什么原则,才能写出优秀的代码? 
  ”返回在函数内malloc的内存是安全的,但是容易造成问题,最好的做法是返回传入的指针。“怎么理解? 
  C语言指针难吗?如何看待数学大v认为指针比范畴论还难? 
  libc 和 libstdc++ 一定是 backward compatible 的吗? 
  解 ACM 题的能力真的代表编程能力吗? 
  老大只让用vi写代码该怎么破? 
  如何在一个月内提高 C++ 水平? 
  作为一名程序员,最大的成就感来自哪里? 
  Linux内核代码大佬们如何观看的? 

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





© 2024-06-26 - tinynew.org. All Rights Reserved.
© 2024-06-26 - tinynew.org. 保留所有权利