有人说c好, c++不如c高效,易学, 如linux的作者
有人推崇c++,说比c强大,安全, 执行效率不比c差
我个人的观点是都对, 在c++失去安全, 强大时不比c慢, 不安全,不强大的c程序是失败的
先说安全性:
我认为安全性分两种, 一种是编译器做的, 如同样的程序c++编译器的waring可能多,这种我觉得和语言完全没关系
是因为c的编译器优化频率没有c++快
另一种是语法级别的,比如公有变量,私有变量
语法级别上其实用c也可以解决, 如私有变量/函数, 在声明前加static就可以保证只在文件内有效,当然一个功能要一个文件,不要一个文件里写很多功能
再说强大,c++比c多的特性是什么, 封装, 继承,多态, 他们同样可以用c的语法实现
先说封装,c本身有结构体可以封装变量, 成员函数的话用函数指针即可, 如下例
#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穿了一件衣裳而已, 把一些丑陋的繁琐的失去交由编译器去干
而如果想写一个好的程序, 这件衣服是必不可少的, 无论是编译器做还是手工做