C:面向过程
C++:面向对象。C++完全兼容C语言,新增对象的知识。
C语言的知识在C++中是完全适用的,这里就不多说那些原来的知识,主要说总结一下目前学习到的新知识。
1、C语言的头文件: 带.h 如:stdio.h
C++的头文件:不带.h 如:iostream
注:在C++文件中也可以调用C语言头文件包含的函数,所以说C++包容C。
后缀:C.c C++.cpp
2、输入cin>> 输出cout<<
int a;
cin>>a; //给a赋值
cout<<a; //打印a的值
3、C++中的指针。C++中也是有指针的,但是在C语言中使用过C语言就知道,指针指来指去很麻烦,C++中则加入了一个新内容,引用,或者说取别名
int a=100;
int& pa=a;
cout<<"a:"<<a<<endl;
cout<<"pa:"<<pa<<endl;
cout<<"&a"<<&a<<endl;
cout<<"&pa<<&pa<<endl;
运行这一代码就可以看到,变量a的值和pa的值是完全一样的,再打印它们的地址也可以看到它们的地址也是一样的,也就是说它们完全就是一个变量,pa是a的另一个名字,就像很多人都有一个大名,但是在家里家人会叫小名一样,这两个名字都是一个人,既然是同一个人自然也就只有一个人的空间。地址一样,而地址唯一,因此引用是不占内存的,改变pa或者a的值自然就改变了该变量的值,它很大程度上代替了指针的功能,使用起来也更加方便。
4、函数重载
在C语言中我们知道,每一个函数的名字都是不一样的,一旦出现相同的函数名编译就会报错,而在C++中则提供了函数重载这一功能,即允许出现重名的函数,系统会根据传递的实参的类型、个数,选择对应的函数,但是要注意,调用函数时传递的实参类型、个数一定要匹配,否则出错。
int fun(int a,int b)
{
return a+b;
}
float fun(float a,float b)
{
return a+b;
}
int main()
{
cout<<fun(1,2)<<endl;
cout<<fun(3.2f,5.5f)<<endl;
}
上述函数的运行是没有问题,系统会自行选择对应的函数运行。
5、函数模板
在写程序时我们会用到许多相同的程序,代码完全一样,但是变量的类型不同,如上面函数重载中的代码,在C语言中我们必须定义两个函数,在使用时调用,但是在C++中提供了函数模板。
template<typename T>
T fun(T a,T b)
{
return a+b;
}
int main()
{
cout<<fun(1,2)<<endl;
cout<<fun(3.2f,5.5f)<<endl;
}
在函数模板中传递过来的形参的类型就是T的类型,从而将此函数中所有的T替换为该类型。
注:T的类型到底是什么是根据调用函数时传递的形参来确定的,在未调用之前,T的类型是未知的。