什么是C++?
C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式 等。熟悉C语言之后,对C++学习有一定的帮助。
C++和C语言的关系?
简单来说,C++兼容C,C是C++的基础。C代码可以在.cpp文件中运行,并且C和C++在语法上有许多相似的地方,C++对C的一些语法进行了改进,补充C语言语法的不足,以及C++是如何对C语言设计不合理的地方进行优化的。
那么C++到底在C上有哪些方面的改进?
第一,在C中,命名冲突的问题非常明显,当有重名的变量或函数时,只能将其中一个名字更改
#include <stdlib.h>
int main()
{
int rand=1;
printf("%d\n",rand);
return 0;
}
显然,此时运行编译器会报错,原因就是库里面已经有了定义的rand函数,而主函数里面的rand变量必然会引起冲突,C语言如果想让程序正常运行,只能改变主函数中的rand变量名。
C语言没办法解决类似这样的命名冲突问题,而C++就不一样了,C++提出了namespace来解决。后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。这样,即使有重复的函数名或变量名,C++仅需要通过在指定的namespace里面找即可。
#include <stdlib.h>
namespace zz
{
int rand=1;
}
int main()
{
printf("%d\n",zz::rand);
return 0;
}
第二,C每次输出打印都需要传指定的类型,如:整形用%d,字符串用%s等。
使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。 C++的输入输出可以自动识别变量类型。
#include <iostream>
using namespace std;
int main()
{
int a=1;
double b=1.1;
char c='a';
cout<<a<<endl;
cout<<b<<c<<endl;
return 0;
}
这样无疑是给我们带来了许多方便,但当遇到对格式有严格要求时,C++的cout无法做到控制间距,这时只能使用C的printf来控制间距。
第三,由于同名函数没办法区分,故C语言没办法支持函数重载。而C++是通过函数修 饰规则来区分,只要参数不同,修饰出来的名字就不一样,就支持了重载。即C++在面对同名函数时会通过参数的匹配来调用更匹配的函数。
例如:当C实现Add函数时,不同类型的返回值和参数的函数名不能相同。C++不仅支持相同函数名,还能正确调用各个函数,因为它可以通过函数重载让编译器自己调用更匹配的函数。
//C语言版本
int Add1(int a, int b)
{
return a + b;
}
double Add2(double a, double b)
{
return a + b;
}
//C++语言版本
int Add(int a, int b)
{
return a + b;
}
double Add(double a, double b)
{
return a + b;
}
此外,C++还有其他一些改进的地方,比如:作用 域方面、IO方面、函数方面、指针方面、宏方面等。