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 |