#include <iostream>
#include <vector>
class Point {
public:
Point(int ix, int iy) :m_ix(ix), m_iy(iy) {
std::cout << "constructor" << std::endl;
}
~Point() {
std::cout << "destructor" << std::endl;
}
void show() {
std::cout << "(" << m_ix << "," << m_iy << ")" << std::endl;
}
private:
int m_ix;
int m_iy;
};
int main()
{
std::vector<Point*> vec;
for (int i = 1;i <= 5;++i) {
vec.push_back(new Point(i, i + 1));
}
for (const auto& elem : vec) {
elem->show();
}
//for (auto& elem : vec) {
// delete elem;
// elem = nullptr;
//}
std::cout << "vector::size(): "<<vec.size() << std::endl;
vec.clear();
return 0;
}
运行上述代码可发现,若注释 delete elem 部分的代码,虽然调用了 vector::clear,却不会调用 Point 的析构函数。