好了,看代码,以下代码有什么问题?
// test_class.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> class A { public: A() { i = new int; } ~A() { delete i; } int* i; }; class B { public: B(void* data) { data_ = data; } ~B() { delete data_; } void* data_; }; template <class T> class C { public: C(T* data) { data_ = data; } ~C() { delete data_; } T* data_; }; void Wrong() { A *a = new A(); B b(a); //函数返回时A 的析构函数不会调用 } void Right() { A *a = new A(); C<A> c(a); //函数返回时A 的析构函数会调用 } int _tmain(int argc, _TCHAR* argv[]) { Wrong(); Right(); return 0; }
[C/C++]_[中级]_[delete 类对象指针的注意事项]
原文地址:http://blog.csdn.net/infoworld/article/details/45560219