21xrx.com
2025-03-31 08:04:26 Monday
文章检索 我的文章 写文章
C++私有和公有成员函数实验报告
2023-06-27 01:06:33 深夜i     7     0
C++ 私有成员函数 公有成员函数 实验报告

C++是一种流行的编程语言,广泛用于软件开发和计算机科学领域。在C++中,成员函数是类的重要组成部分,其中私有和公有成员函数在类定义中使用最为频繁。本文将介绍私有和公有成员函数的定义和使用,并通过实验验证其用途和效果。

一、私有成员函数

私有成员函数是类中定义的仅限于该类内部可调用的成员函数。它们不能被类的使用者或派生类访问和调用。私有成员函数通常用于在类定义内部实施功能,并在公有成员函数中调用。例如,考虑下面的代码片段:

class Shape {
 private:
  int x, y;
  void move(int dx, int dy) {
    x += dx;
    y += dy;
  }
 public:
  Shape(int x, int y)
    this->x = x;
    this->y = y;
  
  void display() {
    cout << "Shape: (" << x << "," << y << ")" << endl;
  }
  void translate(int dx, int dy) {
    move(dx, dy);
  }
};

在这个例子中,move()函数是一个私有成员函数,用于在translate()公有成员函数中移动形状。私有成员函数不能直接从类的使用者访问,但是它们可以在公有成员函数显示或隐式地调用。

二、公有成员函数

公有成员函数是类中定义的可以由类的使用者访问和调用的成员函数。它们通常暴露类实现的一些接口,允许外部使用者通过调用函数来操作类的状态和数据。例如,考虑下面的代码片段:

class Complex {
 private:
  double real, imag;
 public:
  Complex(double r, double i)
    real = r;
    imag = i;
  
  double getReal()
    return real;
  
  double getImag()
    return imag;
  
  void add(Complex c) {
    real += c.real;
    imag += c.imag;
  }
};

在这个例子中,getReal()和getImag()函数是公有成员函数,允许外部使用者获取复数的实部和虚部,而add()函数是公有成员函数,允许外部使用者将另一个复数加到该复数上。

三、实验过程

为了验证私有和公有成员函数的用途和效果,我们设计了一个实验。我们定义了一个名为Rectangle的类,其中包含了长和宽属性以及计算面积和周长的函数。计算面积和周长的函数都是私有成员函数,而获取长和宽属性的函数是公有成员函数。我们还定义了测试函数test(),用于实例化一个Rectangle对象并调用其函数来计算面积和周长。

#include <iostream>
using namespace std;
class Rectangle {
 private:
  int height, width;
  int area() {
    return height * width;
  }
  int perimeter() {
    return 2 * (height + width);
  }
 public:
  Rectangle(int h, int w)
    height = h;
    width = w;
  
  int getHeight()
    return height;
  
  int getWidth()
    return width;
  
  void test() {
    Rectangle r = Rectangle(4, 5);
    cout << "Height: " << r.getHeight() << endl;
    cout << "Width: " << r.getWidth() << endl;
    cout << "Area: " << r.area() << endl;
    cout << "Perimeter: " << r.perimeter() << endl;
  }
};
int main() {
  Rectangle r = Rectangle(2, 3);
  r.test();
  return 0;
}

我们在main()函数中创建一个Rectangle对象,并调用其test()函数来计算面积和周长。由于area()和perimeter()函数是私有成员函数,只能从Rectangle类内部调用,而getHeight()和getWidth()函数是公有成员函数,可以从类的使用者调用。由于area()和perimeter()函数的实现和计算仅限于Rectangle类内部,因此我们可以保证它们的准确性和可靠性。

四、实验结果

在运行上述代码后,我们得到了以下输出结果:

Height: 4
Width: 5
Area: 20
Perimeter: 18

这表明我们定义的Rectangle类可以正确计算面积和周长,并可以从类的使用者获取长和宽属性。由于area()和perimeter()函数是私有成员函数,所以它们不能从外部访问,这可以保护类的内部实现,并避免不必要的干扰和错误。

五、总结

在本文中,我们介绍了C++中的私有和公有成员函数,并通过实验验证了它们的用途和效果。私有成员函数用于在类定义中实现内部功能,并在公有成员函数中调用,而公有成员函数用于向外界暴露类的接口,并允许使用者访问和操作类的数据。私有成员函数和公有成员函数的正确使用可以提高类的可靠性和安全性,并确保类的实现和调用符合规范和标准。

  
  

评论区

请求出错了