大家为什么不用C++写操作系统啊,而是只用C

来源:百度知道 编辑:UC知道 时间:2024/05/25 08:17:49
用C++可以开发出漂亮的界面系统的说,用类不是比C方便和效率高么,还有STL等,用C多费事呀
C++很慢吗 - -

那么,如果不用C++的高级特性,用面向过程的方法,可以写吗

因为现在普遍使用的系统都是在C++大规模使用以前就已经成型的。当然,C++比C方便是真的,但是写系统的话绝对不可能去用STL。(2016年更新:真不知道当年怎么想的STL不能拿来写系统...)

----

C比C++效率高的观念的确很奇怪,C++又不是Java。C++和C的区别仅仅是写法上的。

不明白的事情不要臆断... 相同水平的编译器编译出来C和C++效率也是相同水平的。编译型的语言不可能一个比另一个执行效率低,区别都是语法层面的。(2016年更新:因为语法限制,很多功能用C语言要付出相当大的可读性代价才能达到C++的效率,所以可以粗略视为C++的效率是高于C语言的)

当你把参数传递给函数的时候,那已经是对象编程了。程序是脱离不了对象的,所谓面向对象只是从对象角度出发去考虑。 Windows驱动层虽然是C语言的,但是是典型面向对象写法(第一个参数是操作对象、虚函数表)。

----

相对于更底层的语言效率低?汇编写的程序费牛劲优化也不一定能比高水平的C++编译器编译出来的代码效率高。什么东西自己没弄过不要乱说。

----

因为把以前用C写的东西换成C++重写是不理智的。系统原本的面向对象实现往往是异化的版本,比如windows底层的虚函数表不在结构最前面,乃至UI里metaclass的窗口类。这些没办法和C++的面向对象兼容。系统层一般也没有要用泛型这类非C++不可的地方(2016更新:如果真写一个新系统,不上模板属于自虐)。事实上,至少windows新的上层的大部分实现本来就是C++写的了。

----

你首先先要明白 C++和C的决定性区别不是面向对象,是泛型和名空间。可这两个都是近乎预编译层的东西。

操作系统 对效率要求很高 c++是不能胜任的

即使是c语言有些情况也是难以做到

因此操作系统多是用 c 和汇编 共同开发的

c++的低效是相对底层处理上的
若果用c++不用面向对象的编程方法 那c++就是c