参加了两次学校的程序设计大赛,第一次都用的C,第二次用的C++。而第一次没有做出题目,第二次做出了4道。
对比之后,我便开始思考C++相对于C的不同之处。
1、C++可以动态分配内存
在C中,当我们需要输入一个数组,但是数组的长度不知道的情况下,我们会怎么做?通常我会选择一个可能出现最大的长度MAX,但是这完全不会考虑到特殊情况的:首先这个最大长度还不够大怎么办?第二如果实际输入的元素个数远远没有设置的那么多怎么办?内存不是有一个很大的空洞被浪费了?
而这一点在C++确实可以避免的,通常可以预先定义一个数组的首地址,但不用给他赋值,而在之后可以输入实际的数组长度,确定了之后再确定数组的长度。比如:
int *Num;
int Length;
cin>>Length;
Num = new int[Length];
这样应该能够解决上述的问题。
2、C++类的机制
这一点应该不用说太多了,这个是应该最大的不一样吧?在C++类的机制下,将函数变量完全的封装起来,不需要理会其中的运行过程,这大大简化了我们的工作过程。在main()中只有一点的申明和部分的调用就可以了,这个比起C的结构体应该更加的方便吧。
3、操作符可以重载
最典型的>>和<<两个操作符,可以用来输入或者输出不同类型的参数(就本人而言经常使用operator+这样的重载函数),而在C中,必须要指定操作对象的数据类型,否则是不可以直接操作的,比如说:
int Num = 10;
printf("%d",Num);
//这里必须确定是%d的格式
而在C++中:
int Num = 10;
string strName = "Xiaoming";
cout<<Num<<endl;
cout<<strName<<endl; //这里不需要管他的输出格式的
4、内存管理更加安全
在C++中,我们可以在需要用到变量的时候采取创建它,比如
for(int i = 0; i <100;i++)
{.....;}
而这样的定义在C中式不允许的。
同样的在类的情况下,有构造函数和析构函数,当相应的类被创建的时候,就会调用构造函数,在其生命周期结束的时候就会调用析构函数将其摧毁。相比之下,C++的安全性应当是很高的。
大体上我的所得就是这么一些吧,都是自学没有高人指点,算是一个C++初步学习结束的一个总结吧。