MST

星途 面试题库

面试题:C++友元类在复杂场景中的应用

设计一个图形系统,包含`Circle`类和`Rectangle`类,每个类都有私有成员变量表示其尺寸信息。现在要实现一个`GraphicsAnalyzer`类,它作为`Circle`和`Rectangle`类的友元类,用于计算所有图形的总面积。请给出完整的C++类设计和实现代码,包括必要的构造函数、成员函数等。
48.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

class Circle;
class Rectangle;

class GraphicsAnalyzer {
public:
    double calculateTotalArea(Circle& circle, Rectangle& rectangle);
};

class Circle {
    friend class GraphicsAnalyzer;
private:
    double radius;
public:
    Circle(double r) : radius(r) {}
};

class Rectangle {
    friend class GraphicsAnalyzer;
private:
    double length;
    double width;
public:
    Rectangle(double l, double w) : length(l), width(w) {}
};

double GraphicsAnalyzer::calculateTotalArea(Circle& circle, Rectangle& rectangle) {
    return 3.14159 * circle.radius * circle.radius + rectangle.length * rectangle.width;
}

你可以使用以下方式测试这个代码:

int main() {
    Circle circle(5.0);
    Rectangle rectangle(4.0, 6.0);
    GraphicsAnalyzer analyzer;
    std::cout << "Total Area: " << analyzer.calculateTotalArea(circle, rectangle) << std::endl;
    return 0;
}