zoukankan      html  css  js  c++  java
  • Android中sp和wp的使用

    sp(强指针)是通过引用计数来记录有多少使用者在使用一个对象,如果所有使用者都放弃了对该对象的引用,则该对象将被自动销毁。

    wp(弱指针)在指向一个对象时,仅仅记录该对象的地址,不能通过弱指针来访问该对象(即:不能通过弱指针来调用该对象的成员)

    假设有一个类MyClass,我们要用智能指针来引用这个类的对象,那么这个类需要满足下面两个条件:

      (1)这个类是RefBase的子类或间接子类

      (2)这个类必须定义虚构造函数,即:virtual ~MyClass();

    定义方法:

      ::Android::sp<MyClass> myClass = new MyClass();此时定义好的myClass就可以像普通指针一样去使用了。在我们不需要再使用该智能指针时,只需将myClass = NULL;即可。  (普通指针的定义方法:MyClass *myClass)

      ::Android::wp<MyClass> myClass = new MyClass();此时不能用myClass去调用该对象的成员,需要先升级为强指针,  ::Android::sp<MyClass> pMyClass = myClass.promote();

    Android智能指针用起来是很方便,在一般情况下最好使用智能指针来代替普通指针,但是智能指针是一个对象,并不是一个真正的指针,因此运行效率是远远比不上普通指针的,所以在运行效率敏感的地方,最好还是不要使用智能指针。

  • 相关阅读:
    Linux查看进程运行的完整路径方法
    http chunked编码格式
    剑指offer 26. 树的子结构
    101. 对称二叉树
    http长链接处理不当引发的问题
    linux gstack pstack 进程运行堆栈查看工具 strip
    96. 不同的二叉搜索树
    LeetCode350. 两个数组的交集 II
    C++ Vector转Set与Set转Vector
    Go语言学习笔记十五--Go语言map的基本操作
  • 原文地址:https://www.cnblogs.com/chen-cai/p/9947906.html
Copyright © 2011-2022 走看看