10.1.2 类成员函数的定义
类的成员函数通常在类外定义,一般形式如下:
返回类型 类名::函数名(形参表)
{
函数体
}
双冒号::是域运算符,它主要用于类的成员函数的定义。
例如,例10-1的成员函数Point类的成员函数可定义为:
例10-5
1. void Point::SetPt (int x, int y)
2. {
3. xVal = x;
4. yVal = y;
5. }
6. void Point::OffsetPt (int x, int y)
7. {
8. xVal += x;
9. yVal += y;
10. }
11. int Point:: GetX ()
12. {
13. return xVal;
14. }
15. int Point:: GetY ()
16. {
17. return yVal;
18. }
正象全局函数可以定义为内联函数一样,类的成员函数也可以定义为内联的。例如,类Point的两个成员函数都很短(仅两个语句),如果定义为内联函数,可以提高执行效率。定义内联的成员函数只要在该成员函数定义前插入inline关键字即可:
inline void Point::SetPt (int x,int y)
{
xVal = x;
yVal = y;
}
定义内联函数一个更容易的方法是:将函数定义放在类的定义内。
class Point {
int xVal, yVal;
public:
int GetX (){return xVal ;}
int GetY (){return yVal;}
void SetPt (int x,int y) { xVal = x; yVal = y; }
void OffsetPt (int x,int y) { xVal += x; yVal += y; }
};
需要注意的是:由于函数体在类内,所以函数原型后不需要分号,且所有的函数参数必须有名的。
class ex
{
private:
int value;
public:
void set(int n);
int get(void);
};
int ex::get(void)
{
return value;
}
void ex::set(int n) //关键是这里,编译器老是出错
{
value=n;
}
int main()
{
ex a,exarray[10];
a.set(100);
cout<<"a.get()="<
{
exarray[b].set(b);
}
exarray[9].set(53);
for(int c=0;c<10;c++)
{
cout<<"exarray["<
return 0;
}