0Pricing
C++ Academy · Lección

El puntero this y la encapsulación

Use el puntero this y aplique la encapsulación mediante accesos private y public.

El puntero this y la encapsulación es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué es this?

Dentro de una función miembro no estática, this es un puntero implícito al objeto actual. Úselo para desambiguar nombres o devolver referencias.

class Counter {
    int n_ = 0;
public:
    Counter& add(int x) {
        n_ += x;       // implicit this
        return *this;  // chain calls
    }
};

Acceso implícito

Normalmente no es necesario escribir this->. Los nombres de los miembros se buscan automáticamente: this->n_ y n_ son equivalentes.

Cuándo se requiere this->

Use this-> cuando un parámetro oculte a un miembro, o cuando la búsqueda en una plantilla necesite ayuda para encontrar miembros heredados.

class Person {
    std::string name_;
public:
    void setName(const std::string& name) {
        this->name_ = name;  // or name_ = name;
    }
};

Devolver *this para encadenar

Devuelva *this para admitir interfaces fluidas.

class StringBuilder {
    std::string s_;
public:
    StringBuilder& append(const std::string& part) {
        s_ += part;
        return *this;
    }
};

StringBuilder sb;
sb.append("Hello, ").append("World!");

this en métodos const

Dentro de un método const, this tiene el tipo const ClassName*. No puede modificar miembros a través de él.

Encapsulación: la idea principal

La encapsulación consiste en ocultar el estado interno y exponer únicamente operaciones seguras. Mantenga los datos privados y exponga métodos públicos con una intención clara.

class Stack {
    std::vector<int> data_;     // hidden
public:
    void push(int v) { data_.push_back(v); }
    int  pop()       { int v = data_.back(); data_.pop_back(); return v; }
    bool empty() const { return data_.empty(); }
};

¿Por qué encapsular?

La encapsulación le permite:

  • Cambiar la representación interna sin afectar a quienes llaman al código
  • Garantizar las invariantes en un solo lugar
  • Validar las entradas en el límite
  • Razonar localmente sobre el estado de los objetos

Interfaz pública = contrato

La interfaz pública es una promesa para quienes llaman al código. Manténgala mínima, intencionada y estable. Mantenga privados los detalles de implementación.

Getters y setters

Es un patrón habitual, pero es fácil abusar de él. Evite reflejar cada miembro con un getter y un setter, ya que eso anula la encapsulación. Exponga operaciones, no campos.

Corrección de const, de nuevo

Marque como const todos los métodos que solo leen datos. Así, quienes llaman al código saben qué métodos pueden invocarse de forma segura en instancias const, y el compilador lo garantiza.

Funciones y clases friend

La palabra clave friend concede a otra función o clase acceso a los miembros privados. Úsela con moderación, ya que aumenta el acoplamiento.

class Account {
    double balance_;
    friend void transfer(Account& a, Account& b, double amount);
};

Comprobación rápida

¿Cuál es el tipo de this dentro de un método declarado como void f() const de la clase Foo?

Resumen

this apunta al objeto actual dentro de los métodos no estáticos. Úselo para encadenar operaciones (return *this) y desambiguar nombres. Encapsule el estado mediante datos privados y una interfaz pública pequeña e intencionada.

Preguntas frecuentes

¿La lección «El puntero this y la encapsulación» es gratis?

Sí — el texto completo de «El puntero this y la encapsulación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «El puntero this y la encapsulación»?

Use el puntero this y aplique la encapsulación mediante accesos private y public. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «El puntero this y la encapsulación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. struct frente a class: cuándo usar cada uno
  2. Variables y métodos miembro
  3. Constructores y listas de inicialización de miembros
  4. El puntero this y la encapsulación
← Volver a C++ Academy