C++与C的关系:
C++(C plus plus),见名知意,C++是C的加强版,当然也是很大程度的兼容C的。
C++的新操作:(以下多数是与C对比)
命名空间:
namespace AA
{
int n = 0;
}
namespace BB
{
int n = 8;
}
在定义全局变量时若有两变量名相同就会报错,当加上命名空间后就可以有效防止命名冲突;
当需要使用变量时可用 空间名+作用域符号+变量名
如:AA::n ----------> 0
BB::n ----------> 8
输入输出:
C++中既可以使用原来的 printf、scanf,也可以使用 cout、cin;
cout、cin用法:
cout << "哈哈哈\n"; <------------------> printf("哈哈哈\n");
cin >> a; <------------------> scanf("%(任意格式)",&a);
区别:
当使用printf、scanf时,我们往往需要看看需要什么类型的格式符,而cout、cin不区分这些;
引用:
用法:
数据类型 &新变量名 = 原变量名
int a = 5;
int &b = a;
如上:最后a,b的值都为5;
实际上引用的操作就是给变量a的空间起了个别名叫b,两个变量使用的是同一片空间;
函数重载:
假定我需要子函数帮我算加法,那么用C时这样做
int addtwo(int a,int b)//两数和
{
return a + b;
}
int addthree(int a,int b,int c)//三数和
{
return a + b + c;
}
像这样要用同样的功能,但是因为参数个数不同,我就得记下很多种函数名字,鸭梨山大;
在C++中可以这样:
int add(int a,int b)//两数和
{
return a+b;
}
int add(int a,int b,int c)//三数和
{
return a+b+c;
}
虽然在定义时会有多个函数重名,但在编译时会对每个函数重载(根据参数重命名),这样在使用一类功能时仅记住一个函数名即可。
堆区空间的申请与释放:
在C中使用 malloc 与 free, C++中提供 new 和 delete
//申请一个int 的空间
int *p = (int *)malloc(sizeof(int));
free(p);
int *p = new int;
delete p;
//申请10个int 的空间
int *p = (int *)malloc(sizeof(int) * 10);
free(p);
int *p = new int[10];
delete []p;
由上可以看出:使用malloc时需要对申请的空间进行强制类型转换且需要计算空间的大小,new不需要;