使用C++但不使用该语言的特定功能,应该切换到 C 吗?

Using C++ but not using the language's specific features, should switch to C?

本文关键字:功能 C++ 使用 语言      更新时间:2023-10-16

我正在业余时间开发一个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++,你可能会在未来有所收获,并且永远不会失去任何东西。