如果我将指针存储到容器中的堆栈对象怎么办?这也会安全吗?首先调用哪个析构函数:List<>析构函数,或(P1和P2)?可以肯定的是,这里不应该使用“删除”;因为这些都是堆栈对象,但编译器是否足够智能以避免破坏对象(& P1和& P2)? P1和P2超出范围时应自动销毁。
代码:
int main()
{
list<MyPoint*> myList;
MyPoint P1 = MyPoint(3,4);
MyPoint P2 = MyPoint(1,2);
myList.push_back(&P1);
myList.push_back(&P2);
return 0;
}
答案 0 :(得分:0)
由于以与对象构造相反的顺序调用析构函数,因此代码中的P2
和P1
将在myList
之前被破坏。
此外,在销毁期间不会访问存储在myList
中的指针。因此,即使您在P1
之前声明P2
和myList
,也是安全的。