Compartir a través de


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.

Vea también

Referencia

este puntero