审查生成的报告继承体系

来自 继承
C++23 高级 6分钟 找出 4处问题

根据任务契约审查这个生成的报表类层次。

定义可多态生成摘要、可通过拥有型基类指针销毁,并能在不复制所存数据的情况下检查数值的报表。

C++
#include <iostream>
#include <string>
#include <utility>
#include <vector>
class Report {
public:
    Report(std::string title, std::vector<int> values)
        : title_(std::move(title)), values_(std::move(values)) {}
    std::vector<int> values() const { return values_; }
    virtual std::string summary() const { return title_; }
    ~Report() = default;
protected:
    std::string title_;
    std::vector<int> values_;
};
class SalesReport : public Report {
public:
    SalesReport(std::string title, std::vector<int> values)
        : Report(std::move(title), std::move(values)) {}
    std::string summary() { return title_ + ": sales"; }
};
void print_report(const Report& report) {
    std::cout << report.summary() << '\n';
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误