C++类内部函数在外面定义怎么定义

2024年11月22日 13:14
有2个网友回答
网友(1):

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; }
  };
  需要注意的是:由于函数体在类内,所以函数原型后不需要分号,且所有的函数参数必须有名的。

网友(2):

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()="< for(int b=0;b<9;b++)
{
exarray[b].set(b);
}
exarray[9].set(53);
for(int c=0;c<10;c++)
{
cout<<"exarray["< }
return 0;
}