Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las funciones miembro estáticas se consideran tener ámbito de clase.En contraste con funciones miembro no estáticas, estas funciones no tienen ningún argumento implícito de this ; por consiguiente, sólo pueden utilizar los miembros de datos, los enumeradores, o tipos anidados estáticos directamente.Las funciones miembro estáticas se puede tener acceso sin utilizar un objeto de tipo de clase correspondiente.Considere este ejemplo:
Ejemplo
// static_member_functions.cpp
#include <stdio.h>
class StaticTest
{
private:
static int x;
public:
static int count()
{
return x;
}
};
int StaticTest::x = 9;
int main()
{
printf_s("%d\n", StaticTest::count());
}
Comentarios
En el código anterior, la clase StaticTest contiene la función estática countmiembro.Esta función devuelve el valor del miembro de clase privado pero no es necesariamente asociados a un objeto determinado de StaticTestescrito.
Las funciones miembro estáticas tienen vinculación externa.estas funciones no tienen este punteros.Como resultado, las siguientes restricciones se aplican a funciones:
No pueden tener acceso a datos no estático de miembro de clase mediante los operadores miembro-selección (. o – >).
No pueden declararse como virtual.
No pueden tener el mismo nombre que una función no estáticos que tiene los mismos tipos de argumento.
[!NOTA]
No se evalúa el lado izquierdo de un operador miembro-selección (. o – >) que selecciona una función miembro estática.Esto es importante si la función se utiliza para sus efectos secundarios.Por ejemplo, la expresión SideEffects().CountOf() no llama a la función SideEffects.