# data[].attributes.body
Dennise Alexandra Magallón
XI°B
9 de abril de 2018

# data[].attributes.body
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de programación C con mecanismos que permitan la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

Posteriormente se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Actualmente existe un estándar, denominado ISO C++,

C# es un lenguaje propietario de Microsoft que mezcla las características básicas de C++ (no las avanzadas) simplificándolas al estilo Java y ofreciendo un framework. C# forma parte de la plataforma .NET

# data[].attributes.body
C++
C++98
C++03
C++TR1
C++11
C++14
C++17

# data[].attributes.body
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.

# data[].attributes.body
Es el lenguaje de programación de propósito general asociado al sistema operativo UNIX.

Es un lenguaje de medio nivel. Trata con objetos básicos como caracteres, números, etc… también con bits y direcciones de memoria.

Posee una gran portabilidad

Se utiliza para la programación de sistemas: construcción de intérpretes, compiladores, editores de texto, etc

# data[].attributes.body
Existen compiladores de C++ para diferentes sistemas operativos, lo cual representa una ventaja en cuestión de portabilidad. Es posible compilar nuestro código en diferentes plataformas, si se separa el código operativo del código de interfaz gráfica. Así, si se desea compilar para los sistemas de Apple o Linux, simplemente se tendrá que modificar el código relacionado con la interfase gráfica. Esto reduce el tiempo de programación para pasar el código de un sistema a otro. En lenguajes de programación como Visual Basic esto resulta imposible ya que no existen compiladores para código de Visual Basic en otros sistemas diferentes de Windows.

Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros lenguajes con gran facilidad, como C#, Java, Visual Basic, Javascript, PHP, entre otros.

C y C++ son lenguajes tan robustos y versátiles, que actualmente son muy utilizados en la creación de software, como sistemas operativos (windows, GNU/Linux, Mac OSX, android), utilidades (Bibliotecas, servicios, herramientas de mantenimiento), y en software de desarrollo como compiladores, depuradores e IDE (entornos de desarrollo integrados)

Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).

C++ es apreciado por la eficiencia de su código y es de los lenguajes de programación más populares para crear software de sistemas y para crear aplicaciones.

Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos fuentes abiertos... hay material de sobra y basta para aprender lo necesario y mucho más con este lenguaje.

# data[].attributes.body
El operador de inserción << puede concatenarse: cout << “Nombre: “ << nom << “ Edad: “ << ed; Suponiendo que la variable “nom” contenga la cadena “Carla” y la variable “ed” contenga el entero 23, la salida en pantalla será: Nombre: Carla Edad: 23 Para separar las líneas en pantalla pueden usarse dos métodos: agregar “\n” o usar el manipulador endl: cout << “Nombre: “ << nom << “\n” << “ Edad: “ << ed; o cout << “Nombre: “ << nom << endl << “ Edad: “ << ed; En ambos casos la salida será: Nombre: Carla Edad: 23 La “entrada estándar” de un programa C++ es el teclado, y está representado por el stream cin. El operador de extracción >> permite obtener caracteres o números desde el teclado: int temperatura; cin >> temperatura; Es importante recordar que cin sólo procesa la entrada desde el teclado una vez que el usuario pulsó la tecla “Enter”. El tipo de la variable que recibe datos determina cómo se interpretan los datos ingresados por teclado. El operador de inserción puede concatenarse, por ejemplo: cin >> a; cin >> b; es equivalente a: cin >> a >> b; La librería iostream provee dos streams predefinidas mas: cerr, que es la salida estándar de errores y clog, la salida estándar de registro o “logging”.

# data[].attributes.body
Uso de DLLs (librerías dinámicas) muy complejo. Java y .Net han evolucionado estos conceptos manipulando las DLLs mediante los frameworks que proveen. En cambio, en C++ el desarrollador debe encargarse de cargar y liberar de memoria estas librerías, y correr los riesgos por el manejo de esta memoria.

Elaborar un sistema en C++ es como construir un rascacielos: tiene buen soporte y es robusto, pero si existen errores en los pisos inferiores toda la parte superior se viene abajo terriblemente.

Manejo de punteros y memoria respecto a ello. Claro, esta también es una gran ventaja porque permite un mejor control de la memoria y una buena administración de recursos de computadora, pero la inexperiencia de los desarrolladores o la pérdida de costumbre con este tipo de variables (sobre todo cuando son dobles o triples punteros, inclusive de mayor orden) los lleva al desastre.

No es recomendable para desarrollo de páginas Web.

Uno de los motivos que más quebraderos de cabeza ha traído a los programadores en lenguaje C es la correcta liberación de la memoria. Si se te olvida liberar algo de memoria, cuando el programa termina esa memoria se queda ocupada (aunque el programa ya no siga ejecutándose), son los famosos “Memory Leaks”.

Es difícil (o por lo menos no es tan sencillo como en otros lenguajes) programar bases de datos

# data[].attributes.body
1. Definición: un stream en C++ es un objeto mediante el cual un programa puede insertar o extraer datos utilizando los operadores de inserción << y de extracción >> o funciones. Los datos pueden ser tipos fundamentales (int, char, double, etc.), o cadenas de caracteres. 2. Streams predefinidos Por defecto, la salida asignada a un programa es la pantalla, y en C++ está representada por el stream cout a la que se denomina “salida estándar”. Las definiciones necesarias para su uso están contenidas en el archivo de encabezamiento iostream. Caracteres, números y variables pueden insertarse en cout mediante el operador de inserción <<. Ejemplo: cout << “Hola!”; // muestra una cadena de texto en la pantalla cout << 120; // muestra un número en pantalla cout << x; // muestra el valor de la variable x en pantalla

# data[].attributes.body
Todo programa en C++ debe tener la función principal main() (a no ser que se especifique en tiempo de compilación otro punto de entrada, que en realidad es la función que tiene el main())

int main()
{}

La función principal del código fuente main debe tener uno de los siguientes prototipos:
int main()
int main(int argc, char** argv)

Aunque no es estándar algunas implementaciones permiten
int main(int argc, char** argv, char** env)

La primera es la forma por omisión de un programa que no recibe parámetros ni argumentos. La segunda forma tiene dos parámetros: argc, un número que describe el número de argumentos del programa (incluyendo el nombre del programa mismo), y argv, un puntero a un array de punteros, de argc elementos, donde el elemento argv[i] representa el i-ésimo argumento entregado al programa. En el tercer caso se añade la posibilidad de poder acceder a las variables de entorno de ejecución de la misma forma que se accede a los argumentos del programa, pero reflejados sobre la variable env.

El tipo de retorno de main es un valor entero int. Al finalizar la función main, debe incluirse el valor de retorno (por ejemplo, return 0;, aunque el estándar prevé solamente dos posibles valores de retorno: EXIT_SUCCESS y EXIT_FAILURE, definidas en el archivo cstdlib), o salir por medio de la función exit. Alternativamente puede dejarse en blanco, en cuyo caso el compilador es responsable de agregar la salida adecuada.

# data[].attributes.body
Las principales herramientas necesarias para escribir un programa en C++ son las siguientes:

Un compilador de C++

Paciencia

Nociones sobre programación

Un editor cualquiera de texto, o mejor un entorno de desarrollo (IDE)

Si estas en windows puedes usar:

Visual c++

Visual Studio

Notepad++

DevCpp

Code::Blocks

Eclipse

entre otros

Si estas en Linux puedes usar:

Gedit

Geany

Kate

KDevelop

Eclipse

Code::Blocks

Entre otros

# data[].attributes.body
Uno de los compiladores libre de C++ es el de GNU, el compilador G++ (parte del proyecto GCC, que engloba varios compiladores para distintos lenguajes). Otros compiladores comunes son Intel C++ Compiler, el compilador de Xcode, el compilador de Borland C++, el compilador de CodeWarrior C++, el compilador g++ de Cygwin, el compilador g++ de MinGW, el compilador de Visual C++, Carbide.c++, entre otros.

# data[].attributes.body
C++ tiene los siguientes tipos fundamentales:

Caracteres: char (también es un entero), wchar_t

Enteros: short, int, long, long long

Números en coma flotante: float, double, long double

Booleanos: bool

Vacío: void

# data[].attributes.body
En C++, la biblioteca estándar es una colección de clases y funciones, escritas en el núcleo del lenguaje. La biblioteca estándar proporciona varios contenedores genéricos, funciones para utilizar y manipular esos contenedores, funciones objeto, cadenas y flujos genéricos (incluyendo E/S interactiva y de archivos) y soporte para la mayoría de las características del lenguaje. La biblioteca estándar de C++ también incorpora la biblioteca estándar de C. Las características de la biblioteca estándar están declaradas en el espacio de nombres std.

La Standard Template Library es un subconjunto de la biblioteca estándar de C++ que contiene los contenedores, algoritmos, iteradores, funciones objeto, etc; aunque algunas personas utilizan el término STL indistintamente con la biblioteca estándar de C++.

Los archivos de cabecera de la biblioteca estándar de C++ no usan la extensión «.h».

# data[].attributes.attachment_link.title
cplusplus.com - The C++ Resources Network

# data[].attributes.attachment_link.description
C++ Language: Collection of tutorials covering all the features of this versatile and powerful language. Including detailed explanations of pointers, functions, classes and templates, among others...

# data[].attributes.body
Para tener una variable en un programa, previamente hay que definirla con un tipo y un identificador (es decir, un nombre para la variable).

Por ejemplo:
int numero

define una variable de tipo entero que se llama numero.
Y seguidamente hay que añadir un punto y coma a la expresión:
int numero;
El punto y coma transforma la expresión en una instrucción que se ejecutará en el programa. Cuando se llegue a ella, el programa reservará espacio de memoria según el tipo de variable para poder escribir y leer valores.
Por lo tanto, la fórmula general es:
<tipo> <identificador> <;>
Es lo que llamamos una declaración de variable. En C y C++ todas las variables se deben declarar antes de su uso. Si no, se producirá un error de compilación.
A continuación se muestra un programa completo que funciona: solo declara variables de tipos distintos:
int main()
{
char caracter;
short valor;
int numero;
long numeroMasLargo;
float numeroRealFloat;
double numeroRealDoble;

// fin
return 0;
}

# data[].attributes.body
Las variables son altamente imprescindibles al momento de programar, de hecho sería imposible conseguir una aplicación con una funcionalidad básica sin usar variables; por esta misma razón es necesario aprender a usarlas bien y lo tenemos muy fácil, pues su uso es bastante sencillo e intuitivo, tanto para declararlas como para asignarles valores.

Las variables son posiciones en memoria donde estarán guardados los diferentes valores que le damos o que toman duranet ejecución los datos que usamos y normalmente estarán disponibles a lo largo de la ejecución de nuestro programa. Para asignar valores a una variable en una gran variedad de lenguajes que incluye a C++ se usa el operador "=" seguido del valor que le daremos a la variable (no todos usan el "=" para esto). Veamos un ejemplo completo con todos los posibles usos que le damos a una variable.

# data[].attributes.body
Las datos constantes, mal llamadas por algunos "variables constantes" (realmente no son variables) tienen un valor fijo durante toda la ejecución del programa, es decir, este valor no cambia ni puede ser cambiado a lo largo de la ejecución de nuestro programa. Las constantes son muy útiles para especificar el tamaño de un vector y para algunas otras cosas, como facilidad de uso y confiabilidad del código. Para declarar una constante, se hace despues de declarar las librerías y antes de las funciones, la sintaxis es la siguiente: #define nombre_constante valor. Veamos algunos detalles y luego unos ejemplos sencillos del uso de las constantes en C++

En C++ se pueden definir constantes de dos forma, ambas válidas para nosotros. La primera es por medio del comando #define nombre_constante valor y la segunda es usando la palabra clave const, veamos ahora cada una de estas formas en detalle.

# data[].attributes.body
TipoTamañoComentarioint | 4 bytes | Opción predeterminada para los valores enteros.
double | 8 bytes | Opción predeterminada para los valores de punto flotante.
bool | 1 byte | Representa valores que pueden ser true o false.
char | 1 byte | Se utiliza en los caracteres ASCII de cadenas de estilo C antiguas u objetos std::string que nunca tendrán que convertirse a UNICODE.
wchar_t | 2 bytes | Representa valores de caracteres “anchos” que se pueden codificar en formato UNICODE (UTF-16 en Windows; puede diferir en otros sistemas operativos). Es el tipo de carácter que se utiliza en las cadenas de tipo std::wstring.
unsigned char | 1 byte | C++ no tiene un tipo byte integrado. Utilice un carácter sin signo para representar un valor byte.
unsigned int | 4 bytes | Opción predeterminada para los marcadores de bits.
long long | 8 bytes | Representa valores enteros muy grandes.

# data[].attributes.attachment_link.readable_text
Publicado: abril de 2016

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

El concepto de tipo es muy importante en C++. Cada variable, argumento de función y valor devuelto por una función debe tener un tipo para compilarse. Asimismo, antes de evaluar cada una de las expresiones (incluidos los valores literales), el compilador da implícitamente un tipo a estas expresiones. Algunos ejemplos de tipos son int, que almacena valores integrales, double, que almacena valores de punto flotante (también conocidos como tipos de datos escalares) o la clase std::basic_string de la biblioteca estándar, que almacena texto. Puede crear su propio tipo definiendo un objeto class o struct. El tipo especifica la cantidad de memoria que se asignará para la variable (o el resultado de la expresión), las clases de valores que se pueden almacenar en esa variable, cómo se interpretan estos valores (como patrones de bits) y las operaciones que se pueden realizar en ella. Este artículo contiene información general sobre las principales características del sistema de tipos de C++.

Variable: nombre simbólico de una cantidad de datos. Este nombre se puede utilizar para acceder a los datos a los que hace referencia en el ámbito del código en el que se define. En C++, el término "variable" se utiliza normalmente para hacer referencia a las instancias de tipos de datos escalares, mientras que las instancias de otros tipos normalmente se denominan "objetos".

Objeto: por simplicidad y coherencia, en este artículo se utiliza el término "objeto" para hacer referencia a cualquier instancia de una clase o estructura. Cuando se utiliza en sentido general, incluye todos los tipos, incluso las variables escalares.

Tipo POD (datos estándar): esta categoría informal de tipos de datos de C++ hace referencia a los tipos que son escalares (vea la sección de tipos fundamentales) o que son clases POD. Una clase POD no tiene ningún miembro de datos estático que no sea también POD, y no tiene ningún constructor definido por el usuario, ningún destructor definido por el usuario ni ningún operador de asignación definido por el usuario. Además, las clases POD no tienen funciones virtuales, clases base ni ningún miembro de datos no estático privado o protegido. Los tipos POD suelen utilizarse para el intercambio de datos externos, por ejemplo, con un módulo escrito en lenguaje C (que solo tiene tipos POD).

C++ es un lenguaje fuertemente tipado y que, además, contiene tipos estáticos. Cada objeto tiene un tipo y ese tipo nunca cambia (no debe confundirse con los objetos de datos estáticos).
Al declarar una variable en el código, debe especificar explícitamente su tipo o utilizar la palabra clave auto para indicar al compilador que deduzca el tipo desde el inicializador.
Al declarar una función en el código, debe especificar el tipo de cada argumento y su valor devuelto (o void, si la función no devuelve ningún valor). La excepción se produce cuando se utilizan plantillas de función, que están permitidas en los argumentos de tipos arbitrarios.

Una vez que se declara por primera vez una variable, no se puede cambiar su tipo. Sin embargo, el valor de la variable o el valor devuelto por una función se puede copiar en otra variable de distinto tipo. Este tipo de operaciones se denominan conversiones de tipo. Estas conversiones a veces resultan necesarias, aunque también pueden producir errores o pérdidas de datos.

Cuando se declara una variable de tipo POD, se recomienda encarecidamente iniciarla, lo que significa darle un valor inicial. Una variable, hasta que se inicializa, tiene el valor "no utilizado", que se compone de los bits que estaban previamente en esa ubicación de memoria. Este es un aspecto importante de C++ que debe recordarse, sobre todo si anteriormente utilizaba otro lenguaje que controlaba la inicialización sin su intervención. Cuando se declara una variable de un tipo que pertenece una clase que no es POD, el constructor controla la inicialización.

En el ejemplo siguiente se muestran algunas sencillas declaraciones de variable con descripciones de cada una de ellas. En el ejemplo se muestra también cómo el compilador utiliza la información de tipo para permitir o no permitir que posteriormente se realicen ciertas operaciones en la variable.

A diferencia de algunos lenguajes, C++ no tiene un tipo base universal del que se deriven todos los demás tipos. La implementación del lenguaje en Visual C++ contiene muchos tipos fundamentales, también conocidos como tipos integrados. Esto incluye los tipos numéricos, como int, double, long y bool, además de los tipos char y wchar_t para los caracteres ASCII y Unicode, respectivamente. La mayoría de los tipos fundamentales (excepto bool, double, wchar_t y tipos relacionados) tienen versiones sin signo, que modifican el intervalo de valores que la variable puede almacenar. Por ejemplo, un valor int, que almacena un entero de 32 bits con signo, puede representar un valor comprendido entre -2.147.483.648 y 2.147.483.647. Un valor unsigned int, que también se almacena como 32 bits, puede almacenar un valor comprendido entre 0 y 4.294.967.295. El número total de valores posibles en cada caso es el mismo; solo cambia el intervalo.

El compilador reconoce los tipos fundamentales y tiene reglas integradas que rigen las operaciones que se pueden realizar en esos tipos y cómo se pueden convertir en otros tipos fundamentales. Para obtener una lista completa de los tipos integrados y sus límites de tamaño y numéricos, vea Tipos fundamentales.

En la ilustración siguiente se muestran los tamaños relativos de los tipos integrados:

En la tabla siguiente se muestran los tipos fundamentales que se usan con más frecuencia:

wchar_t

2 bytes

Representa valores de caracteres "anchos" que se pueden codificar en formato UNICODE (UTF-16 en Windows; puede diferir en otros sistemas operativos). Es el tipo de carácter que se utiliza en las cadenas de tipo std::wstring.

unsigned char

1 byte

C++ no tiene un tipo byte integrado. Utilice un carácter sin signo para representar un valor byte.

El tipo void es un tipo especial. No se puede declarar una variable de tipo void, pero se puede declarar una variable de tipo void * (puntero a void), lo que a veces resulta necesario cuando se asigna memoria (sin tipo) sin formato. Sin embargo, los punteros a void no tienen seguridad de tipos y, por lo general, su uso se desaconseja completamente en el lenguaje C++ actual. En una declaración de función, un valor devuelto de tipo void significa que la función no devuelve un valor; se trata de un uso común y aceptable de void. Aunque el lenguaje C requería que las funciones que no tenían ningún parámetro declararan void en la lista de parámetros (por ejemplo, fou(void)), esta práctica no es recomendable en el lenguaje C++ actual, donde debería declararse fou(). Para obtener más información, vea Conversiones de tipos y seguridad de tipos.

Cualquier tipo integrado o definido por el usuario se puede calificar con la palabra clave const. Además, las funciones miembro pueden calificarse con const e incluso sobrecargarse con const. El valor de un tipo const no puede modificarse una vez inicializado.

El calificador const se utiliza habitualmente en las declaraciones de variable y función y la "exactitud de const" es un concepto importante en C++; básicamente significa que debe usarse const para garantizar que, en tiempo de compilación, los valores no se modifican involuntariamente. Para obtener más información, vea const.

Un tipo const es distinto de su versión no const; por ejemplo, const int es un tipo distinto de int. Puede usar el operador const_cast de C++en las raras ocasiones en las que deba quitar la declaración como constante de una variable. Para obtener más información, vea Conversiones de tipos y seguridad de tipos.

En sentido estricto, el lenguaje C++ no tiene un tipo "string" integrado. char y wchar_t almacenan caracteres individuales: es necesario declarar una matriz de estos tipos para aproximarse a una cadena y agregar un valor final null (por ejemplo, '\0' en ASCII) al elemento de matriz después del último carácter válido (también denominado "cadena de estilo C"). En las cadenas de estilo C, era necesario escribir mucho más código o usar funciones de bibliotecas de utilidades de cadena externas. Sin embargo, en el lenguaje C++ actual, tenemos los tipos de la biblioteca estándar std::string (para cadenas de caracteres de tipo char de 8 bits) o std::wstring (para cadenas de caracteres de tipo wchar_t de 16 bits). Estos contenedores STL se pueden considerar tipos de cadena nativos, ya que forman parte de las bibliotecas estándar que se incluyen en cualquier entorno de compilación conforme a C++. Solo tiene que usar la directiva #include <string> para que estos tipos estén disponibles en el programa. (Si usa MFC o ATL, la clase CString también está disponible, pero no forma parte del estándar de C++). En el lenguaje C++ actual, se desaconseja completamente usar matrices de caracteres que terminen con un valor null (las cadenas de estilo C mencionadas previamente).

Cuando se define un objeto class, struct, union o enum, esa construcción se utiliza en el resto del código como si fuera un tipo fundamental. Esa construcción tiene un tamaño conocido en memoria y se aplican ciertas reglas sobre su uso durante la comprobación en tiempo de compilación y, en tiempo de ejecución, durante la vida útil del programa. Las diferencias principales entre los tipos fundamentales integrados y los tipos definidos por el usuario son las siguientes:

El compilador no tiene conocimiento integrado de un tipo definido por el usuario. El compilador "conoce" el tipo la primera vez que encuentra la definición durante el proceso de compilación.

El usuario especifica las operaciones que se pueden realizar en el tipo y cómo se puede convertir en otros tipos definiendo (mediante sobrecarga) los operadores adecuados, como los miembros de clase o las funciones que no son miembro. Para obtener más información, vea Sobrecargar (C++).

No es necesario que tengan tipos estáticos (la regla establece que el tipo de un objeto nunca cambia). A través de los mecanismos de herencia y polimorfismo, una variable declarada como un tipo de clase definido por el usuario (a la que se hace referencia como una instancia de objeto de una clase) podría tener un tipo diferente en tiempo de ejecución que en tiempo de compilación. Para obtener más información, vea Herencia.

Desde las primeras versiones del lenguaje C, C++ sigue permitiendo declarar una variable de un tipo de puntero mediante el declarador especial * (asterisco). Un tipo de puntero almacena la dirección de la ubicación en memoria donde se almacena el valor de datos real. En el lenguaje C++ actual, estos punteros se denominan punteros sin formato y se accede a ellos en el código a través de los operadores especiales * (asterisco) o -> (guion con el símbolo "mayor que"). Esto se denomina desreferenciar y el operador que se utilice dependerá de si se va a desreferenciar un puntero a un valor escalar o un puntero a un miembro de un objeto. Trabajar con tipos de puntero ha sido uno de los aspectos más difíciles y confusos del desarrollo de programación de C y C++. En esta sección se describen algunos hechos y prácticas de ayuda sobre el uso de punteros sin formato, aunque en el lenguaje C++ actual ya no es necesario (o no se recomienda) utilizar punteros sin formato para la propiedad del objeto gracias a la evolución del puntero inteligente (más información al final de esta sección). Todavía resulta útil y seguro utilizar punteros sin formato para inspeccionar objetos, pero si es necesario utilizarlos para la propiedad del objeto, debe hacerse con precaución y debe valorarse cuidadosamente el modo en que los objetos de su propiedad se crean y se destruyen.

Lo primero que debe saber es que, al declarar una variable de puntero sin formato, se asignará solo la memoria necesaria para almacenar una dirección de la ubicación de memoria a la que el puntero hará referencia cuando esté desreferenciado. La asignación de memoria para el propio valor de datos (también denominada memoria auxiliar) todavía no está asignada. Es decir, al declarar una variable de puntero sin formato, se crea una variable de la dirección de memoria, no una variable real de los datos. Si se desreferencia una variable de puntero antes de tener la seguridad de que contiene una dirección válida en una memoria auxiliar, se producirá un comportamiento no definido (normalmente un error irrecuperable) en el programa. En el siguiente ejemplo se muestra este tipo de error:

En el ejemplo se desreferencia un tipo de puntero que no tiene ninguna memoria asignada para almacenar los datos enteros reales ni una dirección de memoria válida asignada. El código siguiente corrige esto errores:

En el ejemplo de código corregido se utiliza la memoria local de la pila para crear la memoria auxiliar a la que pNumber apunta. Utilizamos un tipo fundamental para simplificar. En la práctica, la mayoría de las veces, la memoria auxiliar de los punteros se compone de tipos definidos por el usuario que se asignan dinámicamente en un área de memoria denominada montón (o "almacén libre ") utilizando una expresión con la palabra clave new (en la programación de estilo C se utilizaba la antigua función de biblioteca en tiempo de ejecución de C malloc()). Una vez que están asignadas, normalmente se hace referencia a estas "variables" como "objetos", sobre todo si se basan en una definición de clase. La memoria que se asigna con new debe eliminarse mediante la instrucción delete correspondiente (o, si utilizó la función malloc() para asignarlas, la función free() en tiempo de ejecución de C).

Sin embargo, es fácil olvidarse de eliminar un objeto asignado dinámicamente, especialmente cuando el código es complejo, lo que produce un error de recurso denominado pérdida de memoria. Por esta razón, el uso de punteros sin formato no es recomendable en el lenguaje C++ actual. Casi siempre es mejor incluir un puntero sin formato en un puntero inteligente, que liberará automáticamente la memoria cuando se invoque su destructor (cuando el código sale del ámbito del puntero inteligente). Con los punteros inteligentes, prácticamente se elimina toda una clase de errores en los programas de C++. En el ejemplo siguiente, suponga que MyClass es un tipo definido por el usuario que tiene un método público DoSomeWork();

Para obtener más información sobre los punteros inteligentes, vea Punteros inteligentes.

Para obtener más información sobre las conversiones de puntero, vea Conversiones de tipos y seguridad de tipos.

Para obtener información sobre los punteros en general, vea Punteros.

En la programación Win32 clásica de C y C++, la mayoría de las funciones utilizan definiciones de tipos y macros #define (definidas en windef.h) específicas de Windows para especificar los tipos de parámetros y los valores devueltos. La mayoría de estos "tipos de datos de Windows" son solo nombres especiales (alias) especificados en los tipos integrados de C/C++. Para obtener una lista completa de estas definiciones de tipo y las definiciones de preprocesador, vea Windows Data Types. Algunas de estas definiciones de tipos, como HRESULT y LCID, son útiles y significativas. Otras, como INT, no tienen ningún significado especial y son solo alias para los tipos fundamentales de C++. Otros tipos de datos de Windows tienen nombres que se provienen de la época de programación de C y de los procesadores de 16 bits, y no tienen ningún propósito o significado en el hardware y sistemas operativos modernos. Hay también tipos de datos especiales asociados a la biblioteca de Windows en tiempo de ejecución, que se muestran como Windows Runtime base data types. En el lenguaje C++ actual, la regla general establece una preferencia por los tipos fundamentales de C++, a menos que el tipo de Windows comunique un significado adicional sobre cómo debe interpretarse el valor.

Para obtener más información sobre el sistema de tipos de C++, vea los temas siguientes.
Aquí está otra vez C++
Referencia de lenguaje C++
Biblioteca estándar de C++

# data[].attributes.attachment_link.description
Publicado: abril de 2016 Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC. El concepto de tipo es muy importante en C++. Cada variable, argumento de función y valor devuelto por una función debe tener un tipo para compilarse.

# data[].attributes.body
De selección

Las estructuras de control de selección ejecutan un bloque de instrucciones u otro, o saltan a un subprograma o subrutina según se cumpla o no una condición.

Estructura de control

Las estructuras de control, denominadas también sentencias de control, permiten tomar decisiones y realizar un proceso repetidas veces. Se trata de estructuras muy importantes, ya que son las encargadas de controlar el flujo de un programa, según los requerimientos del mismo.

Selección if simple

Artículo principal: Sentencias if

Se trata de una estructura de control que permite redirigir un curso de acción según la evaluación de una condición simple, sea falsa o verdadera.

Si la condición es verdadera, se ejecuta el bloque de sentencias 1; de lo contrario, se ejecuta el bloque de sentencias 2.

# data[].attributes.headline
Introduccion al Lenguaje de Programacion C++ - Aprende Como descargar Dev C++ y como Funciona

# data[].attributes.subject
Introduccion al Lenguaje de Programacion C++ - Aprende Como descargar Dev C++ y como Funciona

# data[].attributes.attachment_link.title
1. Introduccion al Lenguaje de Programacion C++ - Aprende Como descargar Dev C++ y como Funciona