21xrx.com
2025-04-03 13:28:18 Thursday
文章检索 我的文章 写文章
C++中的成员函数和非成员函数
2023-07-04 18:04:30 深夜i     17     0
- C++ - 成员函数 - 非成员函数 - 对象 -

C++是一门面向对象的编程语言,它支持许多特性以便程序员能够更好地组织代码。在C++中,函数分为成员函数和非成员函数。

成员函数是与类相关的函数。它们只能被该类的对象调用,且可以访问该类的私有成员变量。通过this指针可以获取调用该函数的对象的地址。下面是一个示例:

class Rectangle {
 int width, height;
public:
 void setValues (int,int);
 int area() {return width*height;}
};
void Rectangle::setValues (int x, int y)
 width = x;
 height = y;
int main () {
 Rectangle rect;
 rect.setValues (3,4);
 cout << "area: " << rect.area();
 return 0;
}

在上面的代码中,area()是一个成员函数,他可以访问width和height两个私有成员变量。通过rect对象调用该函数,计算面积并输出结果。

非成员函数是指与类无关的函数。它们可以在全局作用域内定义,并且可以被任何对象调用。在C++中,非成员函数可以通过定义友元函数或者传递对象参数来访问私有成员变量。下面是一个示例:

class Rectangle {
 int width, height;
public:
 void setValues (int,int);
 friend int getArea(Rectangle rect);
};
void Rectangle::setValues (int x, int y)
 width = x;
 height = y;
int getArea(Rectangle rect) {
 return rect.width * rect.height;
}
int main () {
 Rectangle rect;
 rect.setValues(3, 4);
 cout << "area: " << getArea(rect);
 return 0;
}

在上述代码中,getArea函数是一个非成员函数。通过在Rectangle类中定义getArea函数为友元函数,从而可以在这个函数中访问width和height两个私有成员变量。

总的来说,C++中的成员函数和非成员函数都有各自的优势和应用场景。程序员可以根据实际情况选择最适合的一种。

  
  

评论区

请求出错了