Use pointers to Partitions in PartitionVector class (#759726)
The PartitionVector class is now internally using pointers to Partition objects and taking on management of their lifetimes. It therefore has to implement the Big 3: destructor, copy constructor and copy assignment operator [1][2]. This is because the implicitly-defined copy constructor and assignment operator perform memberwise "shallow copying" and the destructor does nothing. This not correct for classes which contain non-class types such as raw pointers. The semantics of the interface still copies each Partition object into the PartitionVector when they are added with push_back() and insert(). Note that a PartitionVector object is explicitly copy assigned in Win_GParted::Refresh_Visual(). They are also implicitly copied when (1) the implementing vector is resized larger to allow it to hold more pointers to Partition objects than it previously had capacity for; and (2) a Partition object is copied including the logicals PartitionVector member. [1] The rule of three/five/zero http://en.cppreference.com/w/cpp/language/rule_of_three [2] Rule of Three https://en.wikipedia.org/wiki/Rule_of_three_%28C%2B%2B_programming%29 Bug 759726 - Implement Partition object polymorphism
parent
48d898eb
Please register or sign in to comment