El puntero inteligente weak_ptr

contorno

weak_ptr no es un control de los puntos objeto de puntero de toda la vida inteligentes, que apunta a un objeto gestionado por un shared_ptr. Un weak_ptr unido a un shared_ptr shared_ptr no cambia la cuenta de referencia. Y una vez que el último shared_ptr se destruye, apunta a se dará a conocer el objeto, incluso si en este momento todavía hay puntos weak_ptr que se dará a conocer el objeto.

Dado que no puede existir el objeto, no podemos usar weak_ptr acceso directo al objeto, sino que hay que llamar a la cerradura. Esta función comprueba si todavía existe weak_ptr objeto puntiagudo. Por ejemplo:

if (shared_ptr<int> np = np.lock()) {    // 如果np不为空则条件成立
    cout << *np << endl;                 // 此时可以访问其对象
}
Operaciones comunes Notas de uso
weak_ptr <T> w Vaciar week_ptr puede apuntar a un objeto de tipo T,
weak_ptr <T> w (sp) Y apuntan a la misma weak_ptr sp objeto shared_ptr. T debe ser convertido en el tipo de sp señalando
w = p p puede ser uno o una weak_ptr shared_ptr. Después de la asignación p w y objetos compartidos
w.reset () La pieza en bruto w
w.use_count () El número de objetos compartidos w shared_ptr
w.expired () Si w.use_count () es 0 devuelve verdadero, falso en caso contrario
w.lock () Si w.expired () es verdadera, devuelve un shared_ptr vacío, de lo contrario es shared_ptr cota

Supongo que te gusta

Origin www.cnblogs.com/southernEast/p/12538644.html
Recomendado
Clasificación