我在家庭作业中实现聚合时遇到问题。我们必须制作一个类文章、获取/设置方法和私有(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() {}
最佳答案
我认为,您使用英文的 Date
和 Article
来指代 Datum
和 Oglass
代码中的类。
您的文章
类没有日期
类成员。它有一个指向 Date
类成员的指针。差异是关键,也是重要的。
如果您的 Article
类确实有一个 Date
类成员,那么它当然会与 Article
的实例一起被销毁code> 类,当 Article
类被销毁时。
但在这种情况下,唯一被破坏的是指向 Date
类的指针。如果在其他地方有另一个指向同一个类实例的指针,它仍然可以被其余代码使用。
但是,如果没有另一个指向此 Date
类的指针,那么恭喜您,您刚刚泄漏了内存。
这里有一些谷歌食物给你:RAII
。搜索它,然后阅读最上面的结果。
关于c++ - C++ 中的聚合 : Date inside Class Article,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095887/