码迷,mamicode.com
首页 > 其他好文 > 详细

peerconnection例子关闭窗口

时间:2017-06-13 19:48:07      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:调用   成员   int   static   ast   cti   技术   获取   eset   

      在\trunk\talk\base\scoped_ptr.h文件中的scoped_ptr_impl模板类的reset方法,由于scoped_ptr_impl类的内部定义结构体Data继承自类模板参数D(代表的是指针析构类),并声明成员变量Data data_;Data data_;当调用reset方法时重新赋值指针,先获取到原始指针T* old = data_.ptr;然后如果该指针非空则执行static_cast<D&>(data_)(old);该语句首先将成员变量转换成父类的引用,然后将原始指针作为参数调用其重载的()成员函数。

      以其中一个scoped_ptr为例,该模板类第一个类模板参数为T,第二个类模板参数为默认参数talk_base::DefaultDeleter<T>,DefaultDeleter是一个定义在当前文件的模板类或者模板结构体,从名字可知为析构类,以模板类scoped_ptr中定义的成员变量talk_base::internal::scoped_ptr_impl<element_type, deleter_type> impl_;为例,使用的是template <class T> struct DefaultDeleter模板而非其他两个重载的DefaultDeleter,而这个模板又传递给talk_base::internal::scoped_ptr_impl模板类成为其第二个类模板参数,由上分析该模板类型会是scoped_ptr_impl内部定义的结构体Data的父类,而且scoped_ptr_impl模板类的reset方法中执行用static_cast<D&>(data_)(old);时即template <class T> struct DefaultDeleter类的inline void operator()(T* ptr) const方法,该方法中执行delete ptr;即class scoped_ptr模板类的第一个类模板参数的析构函数。 
技术分享

peerconnection例子关闭窗口

标签:调用   成员   int   static   ast   cti   技术   获取   eset   

原文地址:http://www.cnblogs.com/wongdu2014/p/7003049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!