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本身有结构体可以封装变量, 成员函数的话用函数指针即可, 如下例
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各有各的主场。
------解决方案--------------------
探讨

引用:

最近我在结构体(假设为ss)里保存函数指针(假设为func),使用这个函数指针时,编辑器显示的提示是:
C/C++ code

ss::func()


原来这样和C++里的 XXX::XXX 一样。