首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

-taodm-请进, vector中new的对象的delete 有关问题

2012-04-10 
-----taodm-----请进,vector中new的对象的delete 问题effictiveSTL里条款7:......指针的”析构函数“是无操

-----taodm-----请进, vector中new的对象的delete 问题
effictive   STL里   条款7   :  
......指针的”析构函数“是无操作。

template   <class   T>
void   Des(T*   p)
{
p-> ~T();
}

int   main()
{
        Test*   p   =   new   Test;
        Des(p);
       
}试过之后,   “有操作啊 "

看了  
_destroy_aux(FIter,   FIter,   _true_type)
{
  //空
}

template   <class   T>
struct   _type_traits <T*>
{
    typedef   _true_type   has_trivial_default_constructor;
    ........
}
意思是对指针类型的,   配置器都不会调用其析构函数,   而不是说  
“指针的”析构函数“是无操作。”   是这样的吗?

再弱弱的问一下:
他说的原生指针,   int*   p;   char*   p;......   (为什么说“原生”指针)
class   T
{};
T*   p;   这也是原生指针?


[解决办法]
p-> ~T();
你这叫指针的析构函数?你调用的明明是T类型的析构函数,或者说调用了指针所指对象的析构函数。
template <class T>
void Des(const T & p)
{
p.~T();
}
这才叫调T类型的析构函数。

热点排行