我一直在使用C编程微控制器,但就像C ++带来的面向对象性质的直觉一样。
一般使用C ++有哪些主要缺点?除了类实例化和删除,调用相关的构造函数和析构函数之外,与使用C的等效实现相比,是否存在大量开销?
具体来说,我关注以下几个方面:
答案 0 :(得分:2)
用C ++编程本身并不会给你一个更慢/更大的/<在这里插入最糟糕的噩梦>程序。但是,这是偏向C到C ++用于微控制器的一些原因:
总的来说,C ++会让你引入比C更大更慢的代码。但是如果你想要那些功能然后在C中做这个很痛苦(想想函数指针而不是虚函数调用......它们实际上是同一个东西)。并且C版本最终将花费相同的时间和资源,因此使用C无法节省。
答案 1 :(得分:0)
动态调度(即标记为virtual
的方法)的成本略高于非虚拟方法(但可以忽略不计)(但好消息是,您不必将方法标记为{{1除非你打算覆盖它,并且当你使用它时,它可能会比你在C中用手工制作的任何东西更快地执行相同的操作)并且异常处理可能会很慢(尽管你不会这样做)。需要在代码中使用异常)。除此之外,没有区别,除了C ++将大大简化代码而不是等效的C代码。