函数
函数原型的三要素:返回类型,函数名,形参列表。
函数应该在头文件中声明,方便函数在不同的文件中使用而且方便函数的修改,定义应该在一个源文件中。
默认实参:当函数调用的时候赋予实参的时候将覆盖默认的实参,使用用户所赋值的实参。
默认实参只能用于尾部缺少的实参。见c++primer P218
默认实参是局部变量,只有在该函数定义的源文件中才有效果的。
Static局部对象:该类型的对象一旦创建后之后再程序结束后才会被释放,而且每次使用该对象后将保留原来的值(即下一次使用的时候,该对象被初始化为上一次使用后保留的值)。
内联函数:有点在于避免了函数调用的开销,在定义函数的基础上,加上关键字inline
如:inline int a(int n);
但是调用的时候按照普通函数的调用即可,其实质只是编译过程中在调用点展开该函数的代码提供编译。
适用于只有几行代码的函数。
类的成员函数:
类的所有成员都必须在类定义中声明。类的成员函数可以访问类的private成员。调用成员函数的时候是使用对象来调用的。用.操作符或者用箭头->操作符。
This指针:在调用成员函数的时候,this指针初始化为调用该函数的对象的地址。
Const成员函数:因为类的成员函数可以修改它们对象的数据成员,但是一旦成员函数定义为const的成员函数的时候就不能修改他们的数据成员。
在类的外面定义成员函数时需要指明该函数的属于哪一个类的。
类的构造函数:作用:初始化类的对象。
构造函数与类同名,没有返回值。可以有多个构造函数,但是每个构造函数必须含有不同数目或者类型的形参。
构造函数放在类的public,初始化列表在形参表之后,以冒号开始,每个成员后面是在圆括号里面的初始值,用逗号分隔开。
如:Sale_item():unite_sold(0),revenue(0.0) {}
重载函数:具有相同的名字而形参表不同。根据实参的类型来决定调用哪一个函数。
注意:不能仅仅基于返回值类型实现重载。
重载与作用域:在函数中局部声明的名字将屏蔽在全局作用内声明的同名的
名字。每一个版本的重载函数都应该在同一个地方声明。
定义重载函数的时候不要过分多,而且设计形参的时候应该避免二义性。
参数的匹配与枚举:不能将整形值传递给枚举类型的形参,但是可以讲枚举值传递给整型的形参。仅当形参是引用和指针的时候,形参是否为const才会有影响。
指向函数的指针必须是类型完全一样的,避免定义的时候名字太长,可以使用typedef简化。
指向重载函数的指针必须与重载函数的一个版本精确匹配!见c++primer P239
浙公网安备 33010602011771号