c++ - C++ 中的聚合 : Date inside Class Article

标签 c++ oop aggregation

我在家庭作业中实现聚合时遇到问题。我们必须制作一个类文章、获取/设置方法和私有(private)变量。我还必须使用名称为 Date 的结构/类(我插入了 int day/month/year),并将该结构类型实现为类 Article 中的 Date ArticleDate 作为私有(private)变量中的聚合。我在向自己解释这个 ArticleDate 应该存在,即使我销毁了 Article 类的对象。是对的吗? + 类 Article 的其他对象和各种子类是否可以使用它?

请问我能得到一个很好的解释吗?谢谢。

这是代码:
文章.h

struct Datum { // struct is in the same header file as class Article (Oglas is Article in Slovenian)
        int dan;
        int mesec;
        int leto ;
};

class Oglas {
    protected:
        string naslov_oglasa; // title of Article
        Datum* datumObjave; // aggregation?
        double cena; // price
    public:

    Oglas();
    Oglas(const Oglas& t);
    ~Oglas();
...
};

方法.cpp:

Oglas::Oglas(): naslov_oglasa(""), cena(0)  {
    this->agregacija();
}

Oglas::Oglas(const Oglas& t): cena(t.cena), naslov_oglasa(t.naslov_oglasa) {
    datumObjave = t.datumObjave; //datumobjave = date of posting the article
}

void Oglas::agregacija() {
    datumObjave = new Datum();
    datumObjave->dan = 5; //day
    datumObjave->mesec = 11; //month
    datumObjave->leto = 1995; // year
}


Oglas::~Oglas() {}

最佳答案

我认为,您使用英文的 DateArticle 来指代 DatumOglass 代码中的类。

您的文章 类没有日期 类成员。它有一个指向 Date 类成员的指针。差异是关键,也是重要的。

如果您的 Article 类确实有一个 Date 类成员,那么它当然会与 Article 的实例一起被销毁code> 类,当 Article 类被销毁时。

但在这种情况下,唯一被破坏的是指向 Date 类的指针。如果在其他地方有另一个指向同一个类实例的指针,它仍然可以被其余代码使用。

但是,如果没有另一个指向此 Date 类的指针,那么恭喜您,您刚刚泄漏了内存。

这里有一些谷歌食物给你:RAII。搜索它,然后阅读最上面的结果。

关于c++ - C++ 中的聚合 : Date inside Class Article,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095887/

相关文章:

c++ - 我如何定义一个将任何类型的指针值作为参数的函数?

c++ - 为什么在 C++ 中的函数内创建对象是一种不好的做法?

c++ - 类成员标识符的解析如何在 C++ 中工作

javascript - JavaScript 中的多重继承

elasticsearch - 在 ElasticSearch 5.6.3 中获取嵌套文档的聚合导致 Lucene 异常

c++ - 传递给这个函数的是什么?

c++ - 附加到 QList 的 QList

c# - 基于示例的关于继承的混淆

用于不包括某些字段的分面搜索的 Elasticsearch 聚合

c++ - 将 float 的高度图数组导出为 16 位原始格式