1.命名空间
C++所有的标识符都存到一个std的命名空间内,只有调用这个命名空间才能使用标识符(using namespace std;);
当然,我们也可以使用自定义的命名空间去定义多个同名变量,函数,只需在调用的时候加上自定义命名空间的名称作用域限定符即可;
在实际使用中,对于小组开发的程序,命名空间起着重要的作用,使得小组成员写的同名函数可以正常使用。
2.C++基本的输入输出流(简单介绍一下就行)
cin>>内容1>>内容2>>内容n>>endl(换行);
cout<<内容1<<内容2<<内容n<< endl(换行);
3.重载(C++为什么支持重载?)
重载的定义:
(1)函数名相同;
(2)参数不同(参数个数,参数类型);
(3)返回值相同。
c++为什么支持重载:
在c语言中,函数名在系统调用时会将函数名改写成‘’_‘’+函数名的形式,在c++中函数名会被改写成 下划线+编译器保留字+函数名字符数+函数名+参数简写(int为i,char为c等),所以在系统调用时,虽然我们看起来的函数名是相同的,但是在编译器编译的时候编译器所看到的函数名是不同的,函数名不同,在参数不同的时候调用不同的函数,这样就构成了所谓的重载。
4.c++缺省参数
缺省参数:在定义函数的时候给一个函数的值
例 fun(int a=0);当进入函数的时候,如果参数有自己的值,那么函数将会使用其值执行函数,如果没有,那么在执行函数的时候,传入的参数将会被赋值为缺省的参数这里是0;
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
指针:指针传递参数本质上是值传递打我方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数传入的实参的值,从而成为了实参的一份临时拷贝。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参的值,正因为如此,被调函数对形参的任何操作都影响了主调函数中的形参变量。
引用传递过程中,被调函数的形式参数虽然作为局部变量在栈中开辟了内存空间但是这是存档的事有主调函数传入的实参变量的地址,正因为如此,被调函数对形参做的任何操作都影响了主调函数中国的实参变量。
从传递角度:
引用传递和指针传递是不同的,虽然他们都是在被调函数栈空间上的一个局部变量牡丹任何对于引用参数的处理都会通过一个间接寻址的方式操作到主调函数中的相关变量,而对于指针传递的参数,如果改变被调函数中的指针的地址,他讲影响不到主调函数的相关变量。如果想通过指针参数传递来改变主调函数中的相关变量,那就得使用只好使用指向指针的指针,或者指针的引用。
从编译角度
程序在编译时分别将指针和勇勇添加到符号表上,符号表上记录的是变量名以及变量所对应的的地址值为引用对象的地址值,符号变生成后就不会再改,因此指针可以改变其指向的找对象,而引用对象则不能修改。
引用:
引用就是给变量起了一个外号,和原变量的地址相同,只是名字不同俗语:猫和咪的区别。
int a=10;
int &b=a;(a是猫b是咪,a的值改变,b也会改变,b的值改变,a也会变)
二、引用参数
1、传递可变参数
传统的c中,函数在调用时参数是通过值来传递的,这就是说函数的参数不具备返回值的能力。所以在传统的c中,如果需要函数的参数具有返回值的能力,往往是通过指针来实现的。比如,实现两整数变量值交换的c程序如下:
void swapint(int *a,int *b)
{
int temp;
temp=*a;
a=*b;
*b=temp;
}
使用引用机制后,以上程序的c++版本为:
void swapint(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
调用该函数的c++方法为:swapint(x,y); c++自动把x,y的地址作为参数传递给swapint函数。
2、给函数传递大型对象
当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。
三、引用返回值
如果一个函数返回了引用,那么该函数的调用也可以被赋值。
引用返回值的概念与引用参数相似,下面通过几个例子说明容易出错的地方。
(1)int &max(int i, int j) //错误的用法,i和j都是局部变量
{
return i>j?i:j;
}
(2)int m;
int &max(int i, int j) //正确
{
m = i>j?i:j;
return m;
}
(3)int &max(int &i, int &j) //正确
{
return i>j?i:j;
}