Ámbito
Los nombres de C++ sólo se pueden utilizar en ciertas áreas de un programa.Esta área se denomina “ámbito” del nombre.El ámbito determina la “duración” de un nombre que no denote un objeto de extensión estática.El ámbito también determina la visibilidad de un nombre, cuando se llama a los constructores de clase y los destructores y, cuando se inicializan las variables locales del ámbito.(Para obtener más información, vea constructores y destructores.) Hay cinco tipos de ámbito:
el nombre de**ámbito local **A declarado en un bloque es accesible dentro del bloque y los bloques agregados por él, y sólo después del punto de declaración.Los nombres de argumentos formales a una función en el ámbito de bloque fuera de la función tienen ámbito local, como si hubieran sido declarados el dentro del bloque que agregaban el cuerpo de la función.Observe el fragmento de código siguiente:
{ int i; }
Como la declaración de i está en un bloque agregado por entre llaves, i tiene ámbito local y nunca es accesible porque ningún código que tiene acceso antes de la llave de cierre.
Las etiquetas de**Ámbito de función **son los únicos nombres que tienen ámbito de función.Se pueden utilizar en cualquier parte dentro de una función, pero no son fuera accesible que funcionan.
El nombre de**Ámbito de archivo **Any declarado fuera de todos los bloques o clases tienen ámbito de archivo.Está disponible en cualquier parte de la unidad de traducción después de su declaración.Los nombres con ámbito de archivo que no declaran objetos estáticos se denominan a menudo nombres globales.
En C++, el ámbito del archivo también se conoce como el ámbito del espacio de nombres.
Los nombres deÁmbito de clase miembros de clase tienen ámbito de clase.Las funciones miembro de clase sólo se puede tener acceso utilizando los operadores miembro-selección (. o – >) o los operadores de puntero a miembro (. * o – >*) de un objeto o un puntero a un objeto de esa clase; los datos no estático de miembro de clase se considera local al objeto de esa clase.Considere la siguiente declaración de clase:
class Point { int x; int y; };
Vea los miembros de clase x y y estar en el ámbito de clase Point.
Los nombres de**Ámbito de prototipo **declarados en un prototipo de función son visibles sólo hasta el final del prototipo.El siguiente prototipo declara tres nombres (strDestination, numberOfElements, y strSource); estos nombres salen del ámbito al final del prototipo:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );