嗯,这可能听起来像一个巨魔问题,但由于C++似乎很难完全掌握(我从来没有真正知道STL实际上是它的"部分"),我想知道在不依赖时使用C而不是C++有什么缺点在OOP上.
C++有时候会有非常复杂的语法,这在我尝试使用OGRE3D时会让我感到困惑......
sep*_*p2k 69
C++不具备C语言的非OO功能:
structs和enums .structenumforJer*_*fin 13
一个未被提及的很多"特性"(但我认为值得注意)是C++编译器社区似乎愿意为了生成符合要求的实现而做更多的工作.当最终成为C89/90的标准开始工作时,几乎每个编译器供应商都按照标准的最新草案工作,并且(特别是当标准接近完成时)确实将大量工作紧密地整合在一起他们可以.
情况已经不是这样了.C99标准(显然已经足够)在十多年前完成了,但仍然基本上只有一个实现严格尝试符合整个标准(Comeau).其他一些(例如,gcc)增加了一些C99功能,但仍然缺少其他一些功能.一个(pcc)处于相当矛盾的位置,几乎增加了C99特有的所有功能,但是不能满足C89/90的要求.
鉴于C++的复杂性,生产符合标准的实现是一个多更艰巨的任务.尽管如此,我猜想已经有更多的实现至少非常接近于符合C++ 0x(由于一年或两年后批准)而不是C99(大约十年前批准).只是为了选择一个任意数字,我希望看到3个符合C++ 0x的1个实现比3个符合C99的实现更快(事实上,我几乎可以预期它会被批准的那一天).
lor*_*ova 12
为什么C++比C好?除了明显的功能列表之外,在我看来,真正的答案是没有充分的理由继续使用C而不是C++.即使您不使用OOP,也可以将其用作更好的C语言.即使您在程序中仅使用C++的一个独特功能,C++也已成为赢家.
另一方面,使用C++没有任何缺点:它保留了C的性能目标,它是一种非常低级的语言,同时允许非常强大的东西.并且您不会错过任何使用C++的C功能!
不要忘记广泛的用户群以及丰富的库和框架.
顺便说一句,C99增加了一些有趣的功能,但十年后仍然有非常有限的编译器支持(所以你必须使用ANSI C).与此同时,C++也在不断发展,编译器供应商致力于提供符合要求的实现.
与指针相比,引用自动完成并且更加安全,标准库更加广泛,模板使代码极其可定制,并且更加快速和安全.C++提供了出色的代码使用/重用和组织.另外,如果你不太依赖OOP,那么你做错了.有时候对象不合适,但它们不是大多数场景.