使用C++但不使用该语言的特定功能,应该切换到 C 吗?
Using C++ but not using the language's specific features, should switch to C?
我正在业余时间开发一个NES模拟器。
我使用c++是因为它是我最常用、最了解、最喜欢的语言。
但是现在我在项目中取得了一些进展,我意识到我几乎没有使用c++的任何特定功能,并且可以在普通C中完成并得到相同的结果。我不使用模板,操作符重载,多态性,继承…所以你会怎么说?我应该继续用c++还是用C重写?
我不会为了提高性能而这样做,它可能会带来副作用,但我的想法是,如果我不需要c++,为什么要使用它?
我使用的c++的唯一特性是类来封装数据和方法,但这也可以用结构体和函数来完成,我使用new和delete,但也可以使用malloc和free,我使用继承来回调,这可以通过指向函数的指针来实现。
请记住,这是一个爱好项目,我没有最后期限,所以需要重写的额外时间和工作不是问题,也可能很有趣。
所以,问题是C还是c++ ?
如果您使用的是c++的一些特性,我会坚持使用c++。真正避免使用c++的唯一原因是,如果您使用的是嵌入式系统,并且没有其他选择。c++有几个优点,使生活更容易,更易于维护。当然,除非你想用这个作为练习来强迫自己学习如何用纯c来做事情。
c++的设计原则之一是不为不使用的特性增加任何开销。
你说你"几乎没有"使用c++的特性。只要继续使用那些你喜欢的或觉得有用的功能,不要担心其他的。
继续使用c++并利用它的STL容器,即使你的应用程序不是围绕类构建的。
我会坚持使用C,直到你觉得你确实需要c++中的一些功能,而这些功能在C中很难实现。
原因是,使用c++,很容易陷入学习新特性的过程中,所以你最终花在c++上的时间要比花在NES模拟器上的时间多得多。
如果你的主要目标是学习c++,这本身并不是一件坏事。既然学习c++不是你的主要重点,而且你刚刚开始学习c++,我建议你继续使用C。毕竟,整个内核仍然是用C编写的。
(顺便说一句,我现在主要是一个c++程序员,但我是从C开始的)。
如果出于某种原因您想使用C而不是c++,那么您现在就应该进行切换。C是c++的一个子集,所以如果你可以用普通的C来做,我会说去做吧。如果您后来决定需要c++所提供的一些c++功能,那么将代码从C更改为c++会更容易。从c++到C要困难得多。
如果您使用字符串和某种容器,最好使用c++及其STL。此外,c++在转换方面不像C那么宽松,因此在使用c++编译时可能会得到更好(更多)的警告/错误,这很好。除此之外,我不在乎。
继续使用c++,你可能会在未来有所收获,并且永远不会失去任何东西。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?