美文网首页
面试——C++智能指针

面试——C++智能指针

作者: 丑角的晨歌 | 来源:发表于2017-11-12 01:25 被阅读0次

    STL中的智能指针:auto_ptr(deprecated),unique_ptr,shared_ptr,weak_ptr,基础内容,不需赘述
    实现一个智能指针,有多少需要注意的地方?
    (1)既然是“指针”,当然要实现解引用操作符、箭头操作符(weak_ptr例外);
    (2)实现bool操作符,以便于以if(xxx)的形式判断有效性;
    explicit operator bool() const
    (3)构造函数,注意explicit;
    (4)是否需要拷贝构造函数,是否需要右值引用;
    (5)是否需要=操作符,要判断是否为自己;
    (6)get,reset方法;
    (7)weak_ptr有lock()方法,返回一个shared_ptr;
    (8)类型转换,static_pointer_cast等;
    (9)引用计数的实现方法,由于智能指针可以多次复制,为了后面的复制操作能让之前的指针的引用计数一直变化,所以这个要怎么实现呢;

    auto_ptr不能做容器元素,因为拷贝时会引起所有权变更,使原指针失效,容易引起问题(事实上因为这个特性,不建议使用auto_ptr,用unique_ptr代替);
    STL中的智能指针均不保证线程安全,提供与基础类型一致的线程安全性(可多线程同时读同一元素,多线程同时写不同元素,其他操作情况结果为未定义);

    相关文章

      网友评论

          本文标题:面试——C++智能指针

          本文链接:https://www.haomeiwen.com/subject/hczgmxtx.html