第1个回答 2009-10-03
操作系统 对效率要求很高 c++是不能胜任的
即使是c语言有些情况也是难以做到
因此操作系统多是用 c 和汇编 共同开发的
c++的低效是相对底层处理上的
若果用c++不用面向对象的编程方法 那c++就是c
然而若用面向对象的方法 相对于c
c++的效率一定是上不去的
c++在面向对象语言中效率是其他面向对象语言难以比拟的 它的低效只是相对于更底层的语言
事实上 windows 重写过多次了
windows 操作系统至今 没有改用c++开发 为什么
linux 似乎也没有人用c++重写过
“事实上,至少windows新的上层的大部分实现本来就是C++写的了”这句话有待考证吧
"汇编写的程序费牛劲优化也不一定能比高水平的C++编译器编译出来的代码效率高"
怎么没有人用c++去写直接与硬件打交道的部分?本回答被网友采纳
第2个回答 2023-06-12
首先,C++(CPP)的那些高级特性是必须在底层核心完成之后才能写的,你不能直接写,否则没有系统核心支持哪些UI和STL都不能用。
C++的运行效率和C相差不大,因为CPP在写底层的时候,补丁的部分(面向对象的部分或者说高级部分特性)特性完全无法发挥,只能像C那样写代码,但是并不是说CPP就不能写操作系统,CPP有ABI和指针和嵌套汇编的能力,一样可以直接操作底层访问底层,C语言相对于CPP的优势只是在嵌入式开发也就是单片机上,因为单片机很小内存,只有4-16K这样,所以C语言就有发挥的机会。
CPP写操作系统是有优势的,比如CPP有智能指针,作用域指针,有内存安全特性和类型安全,也有线程锁这些新加入的特性,如果能用在底层开发上,那是比C还要安全和稳定的。C语言底层也是一堆指针乱飞,结构体在模拟类的表现,其实半斤八两,不过你不要用抽象去和机器交流,应该用面向过程的思想。否则代码隐晦难懂,其他和你合作的人会抱怨你在写什么Wan意。比如linus