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
Playlistsolo posee unstd::vectordestd::string, y ambos ya saben copiarse, moverse y destruirse.addtoma su argumento por valor y lo pasa constd::moveal vector: a lo sumo una copia de la cadena.sizeyfirstson accesoresconst; la secciónprivatedeja el almacenamiento fuera de alcance.
Palabras clave y builtins usados aquí
classconstprivatepublicreturnsize_tvoid
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.
Paso 1 de 3 en Clases y RAII; paso 16 de 27 en Fundamentos del lenguaje.