typestar

La regla del cero en C++

Si cada miembro se limpia solo, la clase no declara destructor, ni copia, ni movimiento: cero miembros especiales.

#include <string>
#include <vector>

// Members that manage themselves: no destructor, no copy code to write.
class Playlist {
  public:
    void add(std::string title) { tracks_.push_back(std::move(title)); }
    std::size_t size() const { return tracks_.size(); }
    const std::string& first() const { return tracks_.front(); }

  private:
    std::vector<std::string> tracks_;
};

Cómo funciona

  1. Playlist solo posee un std::vector de std::string, y ambos ya saben copiarse, moverse y destruirse.
  2. add toma su argumento por valor y lo pasa con std::move al vector: a lo sumo una copia de la cadena.
  3. size y first son accesores const; la sección private deja el almacenamiento fuera de alcance.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
363
Tokens
88
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 70 segundos.

Escribe este fragmento

Paso 1 de 3 en Clases y RAII; paso 16 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →