Funciones miembro static
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.