函数
<type> <name>(<参数>) //type:返回值的类型;参数需指明类型
{<函数体>}
有且仅有一个主函数,程序从主函数开始,主函数调用其它函数,完成后返回主函数直至程序结束。
分类
- 内部函数 :仅在本文件供其他函数调用,一般用static使之局部化。
- 外部函数 :可供其他文件调用,添加关键字extern。
- 内联函数 : 定义在类体内的成员函数,关键字inline,在调用函数处,用内联函数体代码替换。
- 外联函数 : 定义在类体外的成员函数。
返回值
return 表达式;
函数递归
- 递归调用公式
- 结束条件
函数指针
函数名为函数入口地址,指向一个函数。
<type> (*p_name)(函数形参) 函数指针名 = 函数名;(赋值) f_p_name = f_name;
int *p1(int) //p1是函数,有一个int形参,返回值是指向int的指针
int (*p2)(int) //p2是一个函数指针,函数有int形参,返回值为int
int max(int a,int b); //函数
int (*p_max)(int,int); p_max = max; //函数指针赋值
c = (*p)(a,b); //函数指针调用函数max
类和对象
类
将一组对象的数据结构与操作组合在一起的集合,是对象的模板。
- 声明类class
class stu{
private: //访问规则
int id; //属性
char* name;
public: //访问规则
float math,chinese,english;
stu(); //构造函数,构造对象,初始化对象
stu(char,float,float,float); //重载构造
~stu(); //销毁对象时善后,退出程序前系统自动调用
float average(); //一般函数
}
如果函数在外定义,使用:: type class_name::f_name([<参数>]){ 函数体 }
- 友元函数
友元在类B中声明,类A中声明友元函数,但该函数不属于类A。
class B{
private:
int mm,nn;
public:
B(int I,int j);
friend class A; //声明A是友元类
}
class A{
private:
int x,y;
public:
A();
friend int sum(A a); //友元函数
int sumB(B b);
}
int sum(A a){ //友元函数
return(a.x+a.y);
}
int A:sumB(B b){
return(b.mm+b.nn); //访问B的私有属性mm,nn
}
int main(){
B b(4,5); A a(6,10);
cout<<sum(a)<<endl;
cout<<a.sumB(b)<<endl;
}
类成员的指针:成员、函数
int stu::*p = &stu::math; //type class_name::*P_name = &class_name::non_static_stt;
//调用非静态属性
s1.*p = 100; //通过类对象调用指针
int *ps = &stu::math; //type *P_name = &class_name::static_att;调用静态属性
*ps = 10; //直接使用
int (stu::*p)() = &stu::f1;
//type (class_name::*P_name)(形参) = &class_name::non_static_stt;
//调用非静态函数f1
(s1.*p)(); //通过类对象调用指针
int (*ps)() = &stu::f2; //type *P_name = &class_name::static_att;调用静态函数f2
(*ps)(); //直接使用
对象
- 定义对象
class_name instance_name_ord; //定义对象
class_name *p_instance_name; //定义对象指针
class_name instance_name[]; //定义对象数组
instance_name_ord.att; //普通对象调用
p_instance_name->att; //指针对象调用 (*p_instance_name).att;
instance_name_ord.function(); //普通对象调用
p_instance_name->function(); //指针对象调用
- 使用对象
- 对象数组:数组元素为对象。 class_name instance_name[]; //定义对象数组
- 对象指针:class_name *instance_name;
- this
this指针指向类对象 ,通过类对象调用函数。在一个类的成员函数中使用,表示当前对象地址。
void Date::Month(int mn){
month = mn; //三个效果相同
this->month = mn;
(this).month = mn;
}