diff options
Diffstat (limited to 'es-es/c++-es.html.markdown')
-rw-r--r-- | es-es/c++-es.html.markdown | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/es-es/c++-es.html.markdown b/es-es/c++-es.html.markdown index 2c3762d5..9db2c802 100644 --- a/es-es/c++-es.html.markdown +++ b/es-es/c++-es.html.markdown @@ -8,6 +8,7 @@ contributors: - ["Connor Waters", "http://github.com/connorwaters"] translators: - ["Gerson Lázaro", "https://gersonlazaro.com"] + - ["Diego Ramirez", "https://DiddiLeija.github.io"] lang: es-es --- @@ -101,8 +102,8 @@ void print(int myInt) int main() { - print("Hello"); // Resolves to void print(const char*) - print(15); // Resolves to void print(int) + print("Hello"); // Corresponde a void print(const char*) + print(15); // Corresponde a void print(int) } //////////////////////////////////// @@ -114,7 +115,7 @@ int main() void doSomethingWithInts(int a = 1, int b = 4) { - // Hacer algo con los enteros aqui + // Hacer algo con los enteros aquí } int main() @@ -134,7 +135,7 @@ void invalidDeclaration(int a = 1, int b) // Error! // Espacios de nombre ///////////////////// -// Espacios de nombres proporcionan ámbitos separados para variable, función y +// Los espacios de nombres proporcionan ámbitos separados para variable, función y // otras declaraciones. // Los espacios de nombres se pueden anidar. @@ -184,7 +185,7 @@ int main() #include <iostream> // Incluir para el flujo de entrada/salida -using namespace std; // Los streams estan en std namespace (libreria estandar) +using namespace std; // Los streams estan en el espacio de nombre std (libreria estandar) int main() { @@ -208,7 +209,7 @@ int main() // Las cadenas en C++ son objetos y tienen muchas funciones #include <string> -using namespace std; // Strings también estan en namespace std +using namespace std; // Las cadenas también estan en el nombre de espacio std string myString = "Hola"; string myOtherString = " Mundo"; @@ -252,7 +253,7 @@ fooRef = bar; const string& barRef = bar; // Crea una referencia constante a bar. // Como en C, los valores constantes (y punteros y referencias) no pueden ser // modificados. -barRef += ". Hola!"; // Error, referencia constante no puede ser modificada. +barRef += ". Hola!"; // Error, una referencia constante no puede ser modificada. // Sidetrack: Antes de hablar más sobre referencias, hay que introducir un // concepto llamado objeto temporal. Supongamos que tenemos el siguiente código: @@ -264,7 +265,7 @@ string retVal = tempObjectFun(); // - Una nueva cadena se construye con el objeto devuelto como argumento al // constructor // - El objeto devuelto es destruido -// El objeto devuelto se llama objeto temporal. Objetos temporales son +// El objeto devuelto se llama objeto temporal. Los objetos temporales son // creados cada vez que una función devuelve un objeto, y es destruido en el // fin de la evaluación de la expresión que encierra (Bueno, esto es lo que la // norma dice, pero los compiladores están autorizados a cambiar este @@ -295,7 +296,7 @@ void someFun(string&& s) { ... } // Referencia a objeto temporal string foo; someFun(foo); // Llama la función con referencia regular -someFun(tempObjectFun()); // Llama la versión con referencia temporal +someFun(tempObjectFun()); // Llama la función con referencia temporal // Por ejemplo, puedes ver estas dos versiones de constructores para // std::basic_string: @@ -305,7 +306,7 @@ basic_string(basic_string&& other); // La idea es que si estamos construyendo una nueva cadena de un objeto temporal // (que va a ser destruido pronto de todos modos), podemos tener un constructor // mas eficiente que "rescata" partes de esa cadena temporal. Usted verá este -// Concepto denominado "movimiento semántico". +// concepto denominado "movimiento semántico". //////////////////////////////////////////// // Clases y programación orientada a objetos @@ -322,9 +323,7 @@ class Dog { int weight; // Todos los miembros siguientes de este son públicos -// Hasta que se encuentre "private" o "protected". -// All members following this are public -// until "private:" or "protected:" is found. +// hasta que se encuentre "private" o "protected". public: // Constructor por defecto @@ -339,8 +338,8 @@ public: void setWeight(int dogsWeight); // Funciones que no modifican el estado del objeto - // Deben marcarse como const. - // Esto le permite llamarlas si se envia una referencia constante al objeto. + // deben marcarse como const. + // Esto le permite llamarlas si se envía una referencia constante al objeto. // También tenga en cuenta que las funciones deben ser declaradas // explícitamente como _virtual_ para que sea reemplazada en las clases // derivadas. @@ -357,8 +356,8 @@ public: // Esto permite paradigmas potentes como RAII // (mira abajo) // El destructor debe ser virtual si una clase es dervada desde el; - // Si no es virtual, entonces la clase derivada destructor - // No será llamada si el objeto se destruye a través de una referencia de + // Si no es virtual, entonces la clase destructora derivada + // no será llamada si el objeto se destruye a través de una referencia de // la clase base o puntero. virtual ~Dog(); @@ -373,7 +372,7 @@ Dog::Dog() } // Objetos (tales como cadenas) deben ser pasados por referencia -// Si los estas modificando o referencia constante en caso contrario. +// si los estás modificando, o referencia constante en caso contrario. void Dog::setName(const std::string& dogsName) { name = dogsName; @@ -413,9 +412,9 @@ class OwnedDog : public Dog { // Reemplaza el comportamiento de la función de impresión // de todos los OwnedDogs. Mira // http://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping - // Para una introducción más general si no está familiarizado con el + // para una introducción más general si no está familiarizado con el // polimorfismo de subtipo. - // La palabra clave override es opcional, pero asegura que estás + // La palabra clave override es opcional, pero asegúrate de que estás // reemplazando el método de una clase base. void print() const override; @@ -460,8 +459,8 @@ public: // pero inicializa el punto al valor por defecto (0, 0) Point() { }; - // The following syntax is known as an initialization list - // and is the proper way to initialize class member values + // La siguiente sintaxis se conoce como lista de inicialización + // y es la forma correcta de inicializar los valores de los miembros de la clase Point (double a, double b) : x(a), y(b) @@ -474,7 +473,7 @@ public: Point& operator+=(const Point& rhs); // También tendría sentido añadir los operadores - y -=, - // Pero vamos a omitirlos por razones de brevedad. + // pero vamos a omitirlos por razones de brevedad. }; Point Point::operator+(const Point& rhs) const @@ -496,7 +495,7 @@ int main () { // Llama al operador + de Point // Point llama la función + con right como parámetro Point result = up + right; - // Prints "Result is upright (1,1)" + // Imprime "Result is upright (1,1)" cout << "Result is upright (" << result.x << ',' << result.y << ")\n"; return 0; } @@ -525,7 +524,7 @@ public: // plantilla con parámetros sustituidos, por lo que la definición completa // de la clase debe estar presente en cada invocación. // Es por esto que usted verá clases de plantilla definidas -// Enteramente en archivos de cabecera. +// enteramente en archivos de cabecera. //Para crear una instancia de una clase de plantilla en la pila: Box<int> intBox; @@ -544,7 +543,7 @@ boxOfBox.insert(intBox); // A veces verás // template<typename T> -// en su lugar. La palabra clave "class" y las palabras clave "typename" son +// en su lugar. La palabra clave "class" y la palabra clave "typename" son // mayormente intercambiables en este caso. Para la explicación completa, mira // http://en.wikipedia.org/wiki/Typename // (sí, esa palabra clave tiene su propia página de Wikipedia). @@ -568,7 +567,7 @@ Dog fluffy; fluffy.setName("Fluffy") barkThreeTimes(fluffy); // Imprime "Fluffy barks" 3 veces. -Los parámetros de la plantilla no tienen que ser las clases: +// Los parámetros de la plantilla no tienen que ser las clases: template<int Y> void printMessage() { cout << "Aprende C++ en " << Y << " minutos!" << endl; @@ -604,7 +603,7 @@ printMessage<10>(); // Prints "Aprende C++ rapido en solo 10 minutos!" //Todas las excepciones lanzadas dentro del bloque _try_ pueden ser // capturados por los siguientes manejadores _catch_. try { - // No asignar excepciones en el heap usando _new_. + // No asigne excepciones en el heap usando _new_. throw std::runtime_error("Ocurrió un problema"); } @@ -629,10 +628,10 @@ catch (...) // (Adquisición de recursos es inicialización). // A menudo se considera el paradigma más poderoso en C++ // Y el concepto es simple: un constructor de un objeto -// Adquiere recursos de ese objeto y el destructor les libera. +// adquiere recursos de ese objeto y el destructor les libera. // Para entender cómo esto es útil, -// Considere una función que utiliza un identificador de archivo C: +// considere una función que utiliza un identificador de archivo C: void doSomethingWithAFile(const char* filename) { // Para empezar, asuma que nada puede fallar. @@ -691,11 +690,11 @@ bool doSomethingWithAFile(const char* filename) failure: fclose(fh); - return false; // Propagate el error + return false; // Propaga el error } // Si las funciones indican errores mediante excepciones, -// Las cosas son un poco más claras, pero pueden optimizarse mas. +// las cosas son un poco más claras, pero pueden optimizarse más. void doSomethingWithAFile(const char* filename) { FILE* fh = fopen(filename, "r"); // Abrir el archivo en modo lectura @@ -732,9 +731,9 @@ void doSomethingWithAFile(const std::string& filename) // Esto tiene ventajas _enormes_: // 1. No importa lo que pase, -// El recurso (en este caso el manejador de archivo) será limpiado. +// el recurso (en este caso el manejador de archivo) será limpiado. // Una vez que escribes el destructor correctamente, -// Es _imposible_ olvidar cerrar el identificador y permitir +// es _imposible_ olvidar cerrar el identificador y permitir // fugas del recurso. // 2. Tenga en cuenta que el código es mucho más limpio. // El destructor se encarga de cerrar el archivo detrás de cámaras |