c++ vs c解决思路
c++ vs c
有人说c好, c++不如c高效,易学, 如linux的作者
有人推崇c++,说比c强大,安全, 执行效率不比c差
我个人的观点是都对, 在c++失去安全, 强大时不比c慢, 不安全,不强大的c程序是失败的
先说安全性:
我认为安全性分两种, 一种是编译器做的, 如同样的程序c++编译器的waring可能多,这种我觉得和语言完全没关系
是因为c的编译器优化频率没有c++快
另一种是语法级别的,比如公有变量,私有变量
语法级别上其实用c也可以解决, 如私有变量/函数, 在声明前加static就可以保证只在文件内有效,当然一个功能要一个文件,不要一个文件里写很多功能
再说强大,c++比c多的特性是什么, 封装, 继承,多态, 他们同样可以用c的语法实现
先说封装,c本身有结构体可以封装变量, 成员函数的话用函数指针即可, 如下例
这里pfun相当于public成员函数, 如果是private的则不要声明函数指针, 直接在当前文件里写一个static 函数
此外还要"一个类"一个文件
再说继承:
同样可以用函数指针搞定
最后多态:
其实还是函数指针, 在"基类"里写指针, 在派生类里写各个函数, 在调用的时候加判断
if ( 派生类1 )
fun1();
else
...
最后可以看出, c++就是给c穿了一件衣裳而已, 把一些丑陋的繁琐的失去交由编译器去干
而如果想写一个好的程序, 这件衣服是必不可少的, 无论是编译器做还是手工做
------解决方案--------------------
最近我在结构体(假设为ss)里保存函数指针(假设为func),使用这个函数指针时,编辑器显示的提示是:
有人说c好, c++不如c高效,易学, 如linux的作者
有人推崇c++,说比c强大,安全, 执行效率不比c差
我个人的观点是都对, 在c++失去安全, 强大时不比c慢, 不安全,不强大的c程序是失败的
先说安全性:
我认为安全性分两种, 一种是编译器做的, 如同样的程序c++编译器的waring可能多,这种我觉得和语言完全没关系
是因为c的编译器优化频率没有c++快
另一种是语法级别的,比如公有变量,私有变量
语法级别上其实用c也可以解决, 如私有变量/函数, 在声明前加static就可以保证只在文件内有效,当然一个功能要一个文件,不要一个文件里写很多功能
再说强大,c++比c多的特性是什么, 封装, 继承,多态, 他们同样可以用c的语法实现
先说封装,c本身有结构体可以封装变量, 成员函数的话用函数指针即可, 如下例
- C/C++ code
#include <stdio.h> struct A { void (*pfun) ( void ); }p; void fun ( void ) { printf("OK"); } int main() { p.pfun=fun; (*p.pfun)(); return 0; }
这里pfun相当于public成员函数, 如果是private的则不要声明函数指针, 直接在当前文件里写一个static 函数
此外还要"一个类"一个文件
再说继承:
同样可以用函数指针搞定
最后多态:
其实还是函数指针, 在"基类"里写指针, 在派生类里写各个函数, 在调用的时候加判断
if ( 派生类1 )
fun1();
else
...
最后可以看出, c++就是给c穿了一件衣裳而已, 把一些丑陋的繁琐的失去交由编译器去干
而如果想写一个好的程序, 这件衣服是必不可少的, 无论是编译器做还是手工做
------解决方案--------------------
最近我在结构体(假设为ss)里保存函数指针(假设为func),使用这个函数指针时,编辑器显示的提示是:
- C/C++ code
ss::func()
------解决方案--------------------
对于OS核心来说,运行效率要求无比重要,其它的东西都得让道。所以linux的作者会说C更好——其实他没说汇编更好我都感到很奇怪了,大概是为了可移植吧。呵呵
对于小程序来说,反正不会有代码复用以及未来维护问题,用C简单解决岂不是比写一堆的C++类代码更好很多?
但要是系统够大,要是代码复用要求够多,要是未来的维护问题严重,而且其实运行效率要求并不变态。那,我不相信谁会死抓住C不放,宁肯付出无数倍的代价也绝不用C++......
------解决方案--------------------
楼上所言极是,这是这个原有,才使C++ C各有各的主场。
------解决方案--------------------