网站首页 > 参考文献> 文章内容

C++中any不是一个模板类它的类摘要都在这里了

※发布时间:2019-8-20 6:54:52   ※发布作者:A   ※出自何处: 

  any是一种很特殊的容器,它只能容纳一个元素,但这个元素可以是任意的类型—int、手纹乱double、string、标准容器或者任何的自定义类型。

  程序可以用any保存任意的数据,在任何需要的时候将它取出。这种功能与shared_ptrvoid有些类似,但any是类型安全的,它已经被收入C++17标准。any位于名字空间boost,需要包含头文件boost/any.hpp,即:

  any能够容纳任意类型的原因在于它的构造函数any(const ValueType&)和赋值函数operator=(const ValueType&),它们是模板函数,可以接受任意的类型,将值存入内部的一个模板类holder。从这个意义上讲,any实际上是一个包装类。

  any的析构函数删除内部的holder对象。如果类型是指针,any并不会对指针执行delete操作,所以,如果用any保存原始指针会造成内存泄漏,替代方法是使用智能指针来存入any容器,如shared_ptr。例如:

  空的any构造函数创建一个空的any对象,不持有任何值。函数clear()可以清空any对象,empty()可以判断any对象是否是空的。如果any持有一个对象,那么函数type()返回对象的类型信息,是一个标准的type_info类的引用。以上就是C++中,any的类摘要了,看完你是不是收获满满呢?

  财成国际

关键词:摘要模板