Última actualización:2026-10-12
El operador de desreferencia * en C++¶
0. Introducción¶
Normalmente, al manipular punteros, usamos *, por ejemplo:
La respuesta es afirmativa; por ejemplo, en C++ existen además los tres siguientes:
::*.*->*
¿Sabes qué significa cada uno de ellos?
1. ::*¶
::* se denomina Pointer to member declarator, el puntero al declarador de miembro.
Veamos un ejemplo:
En el siguiente ejemplo, ¿cómo obtienes la dirección de w_?
Si lo escribes como double * d = &w_; no es válido, porque no se sabe dónde está w_; por eso se necesita un puntero al declarador de miembro, que permite hacer el enlace, y una vez que se tiene ese puntero ya se puede acceder a los miembros. Sigamos con los otros dos.
class Rectangle {
public:
double w_, h_;
Rectangle(double w, double h) : w_(w), h_(h) {}
double area() { return w_ * h_; }
};
int main() {
Rectangle r{2.1, 3.2};
double Rectangle::* w = &Rectangle::w_;
r.*w = 2.2;
std::cout << r.w_ << std::endl;
};
2. .*¶
.* se conoce como pointer to member of object; este es fácil de entender: es el puntero para acceder a los miembros de un objeto. Los punteros a miembros permiten referirse a los miembros no estáticos de un objeto de una clase. No se puede usar un puntero a miembro para señalar a miembros estáticos de la clase, porque la dirección de un miembro estático no está asociada a ningún objeto en particular.
Por eso, en el ejemplo anterior, esta línea de código modifica el valor del miembro w a 2.2.
3. ->*¶
->* se conoce como pointer to member of pointer; este es todavía más fácil de entender: es similar a ., pero opera sobre la dirección de los miembros de un **objeto puntero*,
Así que el ejemplo correspondiente queda así:
Para más detalles, consulta cppreference.com.https://en.cppreference.com/w/cpp/language/pointer#Pointers_to_members
¿Lo has aprendido? Fin de esta sección~
Temas relacionados¶
- Funciones virtuales puras y clases abstractas en C++ | C++那些事
- Aserciones assert en C++ | C++那些事
- Campos de bits en C++ | C++那些事
- Implementar el polimorfismo de C++ en lenguaje C | C++那些事
- const en C++: constantes y modificación | C++那些事
- La familia completa de const en C++ | C++那些事
- Inicialización y asignación en C++ | C++那些事
- Formas de devolver varios valores en C++ | C++那些事
- La palabra clave mutable en C++ | C++那些事
- C++ restrict y optimización del compilador | C++那些事