1.有一个向量类Vector,包括一个点的坐标位置x和y,设计两个友元函数,实现两个向量的加法和减法运算。
2.定义一个由y=ax+b确定的直线类Line,该类的构造函数初始化直线,成员函数Print显示该直线方程,友元函数SetPoint()求解两条直线的交点。
3.定义一个类Student记录学生计算机课程的成绩,要求使用静态成员变量或静态成员函数计算全班计算机课程的总成绩和平均成绩。
在C++编程中,友元和静态成员是两种重要的特性,它们允许我们突破类的封装边界,以实现特定的功能需求。
友元(Friend)是一种非成员函数或类,它可以访问类的私有(private)和保护(protected)成员。在实验的向量类Vector中,我们定义了两个友元函数`add`和`sub`来实现向量的加法和减法运算。友元函数不属于类的成员,但它们可以直接操作类的私有数据,这使得我们可以为类提供特定的操作而不必在类内部实现这些操作。在`Vector`类中,这两个友元函数接受两个`Vector`对象作为参数,计算它们的和或差,并返回一个新的`Vector`对象。
静态成员,包括静态数据成员和静态成员函数,是属于类而非类的实例的。这意味着所有类的对象共享同一个静态成员的副本。在实验中,我们用静态成员来计算全班学生的计算机课程总成绩和平均成绩。例如,可以定义一个静态数据成员`total_score`存储总成绩,一个静态成员函数`calculate_average`来计算平均成绩。这样,每个`Student`对象无需拥有自己的总成绩和平均成绩,而是通过静态成员共享这些信息。
对于直线类`Line`,我们需要一个构造函数来初始化直线方程的系数a和b,以及一个成员函数`Print`来显示直线方程。同时,友元函数`SetPoint`可以用来求解两条直线的交点。这个函数可能需要访问两条线的系数并解决线性方程组,从而找到交点的坐标。
实验报告中的评分标准强调了实验预习、实验过程、实验报告的重要性,这些都是评估学生实验能力的关键因素。实验报告应包含实验目的、设备、原理、步骤、记录、数据处理和结论等内容,以全面展示学生对实验的理解和应用。
在实际编程中,友元和静态成员的使用需谨慎,因为它们可能破坏封装性,增加代码的复杂性和维护难度。然而,在某些特定情况下,如实现数学运算符重载、跨对象通信或全局统计信息时,它们是十分有用的工具。通过这些实验,学生可以更深入地理解C++的高级特性和面向对象编程的原则。