So, what C++ do YOU use in you practice? Do you mix the styles, say, arrays and vectors? Are there any rules or best practices here?…
现代C,绝对。但是在我看来,这并不排除阵列。仍然存在阵列优于载体的情况。但是当我使用数组时,我以STL的方式使用它们。我使用指针作为迭代器,我将STL算法应用于数组的内容,依此类推。
顺便说一下,Bjarne Stroustrup自己已经被引用来描述C以与自己描述的非常相似的方式:
Within C++, there is a much smaller and cleaner language struggling to get out
当然有限制。与现代C,编译时间往往受苦。而且它需要更多的高级编译器,这在某些平台上使得它不会发生。而且还有很多更保守的主要开发人员或项目经理,或者古代的代码库有时意味着它也不是一个选择。而且有一定的学习曲线,因为C的所有陷阱仍然存在,你只需要学会绕过他们(例如,内存泄漏不会消失,现代C只是定义了一些非常强大的模式来避免它们)。
但是我认为现代C可以被认为是一种美丽的语言。这绝对不是你如何描述传统的“C-class”风格C。
当我使用(其他)高级语言工作时,我发现几乎总是有一些我从C中想念的东西。语言错过了强大的和类型安全的容器或表达式迭代器/算法,或者它缺少对RAII的支持,或者没有办法表达通用算法,就像模板一样。
这些语言也有其优点,而且无可争辩的地方,他们比C更好。但我通常也发现他们有明显的缺点,在那里我无法表达自己的想法以及我可以在C。我必须跳过篮球,牺牲类型的安全,依靠反思或其他任何东西,只是为了做一些C自己支持的东西。