第一部分 预备知识
第一章 c++回顾
1.2函数与参数
专有名词:
formal parameter:形式参数 actual parameter:实际参数 value parameter:传值参数
copy constructor:复制构造函数 destructor:析构函数 reference parameter:引用参数
const reference:常量引用 reference return:引用返回 const reference return:常量引用返回
signature:签名 function overloading:函数重载
1.当函数的参数为传值参数时,调用函数需要使用形参类型的复制构造函数,而函数调用结束后需要使用形参类型的析构函数来释放参数,会增加程序的运行时间。
copy constructor:它必须的一个参数是本类型的一个引用变量。
2.使用const reference传参代表函数不会修改实参,这在软件工程中是十分重要的。
3.reference return与普通return的区别在于普通return返回时会生成临时变量,函数调用结束后会销毁这个临时变量,而reference return不会生成临时变量,当然调用结束后也不用销毁。
4.当使用const reference return时,返回的结果只能赋给一个const常量。
1.3异常
一个异常抛出,处理
int abc(int a, int b, int c)
{
if(a <= 0 || b <= 0 || c <= 0)
throw"All parameters should be > 0";//抛出一个char*类型的异常
return a + b * c;
}
int main()
{
try{
cout<<abc(2, 0, 4)<<endl;//可能出现异常的代码
}
catch(char* e)
{
cout<<"An exception has been thrown"<<endl
return 1;
}
return 0;
}
1.4动态存储空间分配
1.操作符:new
使用:int *y = new int;
*y = 10;
或 int *y = new int(10);
数组:float *y = new float[20];//动态开辟了有20个元素的float数组
2.当使用操作符new来开辟空间时,若没有足够的内存来进行分配会抛出bad_alloc异常。
捕捉异常:catch(bad_alloc e){};
3.释放动态分配的空间:
操作符:delete
使用delete y;
delete []x;
1.5自有数据类型
constant function:常量函数
1.c++在声明函数时形参可以只写数据类型而不写变量名,因为编译器只需知道形参的数据类型便可为其在内存中分配空间。
2.c++中const关键字写在函数名前与函数名后的区别:
首先要注意只有类的成员函数才能在函数名后面加上const,这时成员函数叫做constant function
class Sample{
public:
int value;
void GetValue() const;
void func(){};
Sample(){value = 0;}
};
常量成员函数在执行期间不能修改成员变量(调用对象)的值(静态成员变量除外),也不能调用同类的非常量成员函数(同样的静态成员函数除外)。
void Sample::GetValue() const{
value = 0;//错误,常量成员函数不能修改成员变量的值
func();//错误,常量成员函数不能调用非常量成员函数
}
而在函数名前加const则表示函数的返回值为常量。