13.1.3 类的方法
类的方法,又称类的成员函数。在13.1.1节的示例中,类point和student内定义的函数就是成员函数,用来做计算或访问类的属性。在类体中的声明方法和普通函数的声明方式相同,其格式如下:
- <函数返回类型><成员函数的名称>([<参数列表>])
- {
- <函数体>
- }
在成员函数的参数列表中可以定义默认参数,也可以省略。成员函数的函数体可以在类体内被定义,也可以在类体外被定义。一般情况下,为保持类体的清晰明了和效率,只有简短的方法才在类体内定义,这些方法称为内联(inline)函数。
如果在类体外定义成员函数,必须用域运算符"::"指出该方法所属的类。其格式如下:
- <函数返回类型><类名>::<成员函数的名称>([<参数列表>])
- {
- <函数体>
- }
在函数体内可以直接引用类定义的属性,无论该属性是公有成员还是私有成员。
【示例13-5】 给示例13-4中的类增加成员函数hi(),然后在类体外定义。
- class person
- {
- int id;
- int age;
- char * name;
- void hi();
- }
- void person::hi()
- {
- cout<<"hi,it it a example."<<endl;
- }
分析:成员函数hi()在类体内声明,但却在类体外定义。因此定义具体的代码时,必须用person::hi的形式。
类的每项操作都是通过方法实现的,使用某个操作就意味着要调用一个函数。这对于小的和常用的操作来说,开销是非常大的。内联函数就是用来解决这个问题的,它将该函数的代码插入在函数的每个调用处,作为函数的内部扩展,用来避免函数频繁调用机制带来的开销。虽然这种做法可以提高执行效率,但如果函数体过长会有不良后果。因此,一般对于非常简单的方法,才声明为内联函数。例如,示例13-3中的成员函数getchinese()就是一个内联函数。因此,示例13-5中的成员函数hi()要想成为内联函数,必须修改为如下形式:
- inline float student::getchinese()
- {
- return chinese;
- }
分析:用inline声明后,函数getchinese()的代码将被插入在函数的每个调用处。
【责任编辑:
云霞 TEL:(010)68476606】