• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Infoudo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: Teléfono: +58 (412) - 8226575. WhatsApp y Telegram: +58 (426) - 6836955 o escriba al correo: [email protected]. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular

WEB TRANSLATOR

LINK for English Language

Use this link for translate into English


+ Buscar en InfoUDO

 

Métodos estáticos de una clase

Tweet
 

lunes julio 11, 2016

Las funciones o métodos de la clase pueden definirse de tipo estático.

Un método estático solo puede acceder a los atributos estáticos declarados en la clase.

No se pueden definir dos funciones con igual nombre y que una sea estática y la otra no.

Un método estático se lo puede llamar sin la necesitad de crear un objeto de dicha clase. Para poder llamarlo debemos anteceder el nombre de la clase y el modificador :: (dos veces dos puntos).

Problema 1:

Plantear una clase que defina un atributo y un método estático. Desde la main llamar al método estático sin tener que crear un objeto de dicha clase.

Programa:

#include<iostream>

using namespace std;

class Prueba {
    static int x1;
public:
    static int retornarX();
};

int Prueba::x1 = 20;

int Prueba::retornarX()
{
    return x1;
}

void main()
{
    cout << Prueba::retornarX(); // 20
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace :

MetodoEstatico1.zip

Veamos el programa mínimo para crear un atributo estática y un método estático. Primero declaramos el atributo estático y el método estático en la declaración de la clase antecediendo la palabra clave static:

class Prueba {
    static int x1;
public:
    static int retornarX();
};

Definimos e inicializamos la variable estática con el valor 20:

int Prueba::x1 = 20;

La implementación del método estático es similar a lo ya visto teniendo en cuenta que dentro de dicho método solo podemos acceder a atributos estáticos (tengamos en cuenta que este método se crea y existe independientemente a que se creen objetos de la clase Prueba)

Finalmente podemos ver que para acceder a dicho método no es necesario crear un objeto de la clase Prueba, solo con anteceder al nombre del método con el nombre de la clase y los caracteres :: tenemos acceso:

void main()
{
    cout << Prueba::retornarX(); // 20
    cin.get();
}

Problema 2:

Plantear una clase Cuenta que defina dos atributos, uno que almacene el importe de la misma y otro atributo estático llamado cantidad que se debe incrementar en uno cada vez que se crea un objeto de dicha clase, definir en esta misma clase un método estático que retorne el contandor cantidad. Por otro lado crear una clase Banco que defina tres objetos de la clase Cuenta. Imprimir la cantidad de cuentas llamando al método estático de la clase Cuenta.

#include<iostream>

using namespace std;

class Cuenta {
    float saldo;
    static int cantidad;
public:
    Cuenta(float sal) { saldo = sal; cantidad++; };
    static int retornarCantidad() { return cantidad; };
};

int Cuenta::cantidad = 0;

class Banco {
    Cuenta *cuenta1, *cuenta2, *cuenta3;
public:
    Banco();
    ~Banco();
    void cantidadClientes();
};

Banco::Banco()
{
    cuenta1 = new Cuenta(1000);
    cuenta2 = new Cuenta(3000);
    cuenta3 = new Cuenta(5000);
}

Banco::~Banco()
{
    delete cuenta1;
    delete cuenta2;
    delete cuenta3;
}

void Banco::cantidadClientes()
{
    cout << Cuenta::retornarCantidad();
}

void main()
{
    Banco *banco1 = new Banco();
    banco1->cantidadClientes();
    delete banco1;
    cin.get();
}

Este proyecto lo puede descargar en un zip desde este enlace :

MetodoEstatico2.zip

Declaramos la clase Cuenta con un atributo estático llamado cantidad y un método estático llamado retornarCantidad, el método estático puede acceder al atributo cantidad y no al de saldo ya que cantidad está declarado de tipo static.

class Cuenta {
    float saldo;
    static int cantidad;
public:
    Cuenta(float sal) { saldo = sal; cantidad++; };
    static int retornarCantidad() { return cantidad; };
};

Para llamar al método static desde la clase Banco lo hacemos directamente con el nombre de la clase seguido por el operador :: y el nombre del método estático:

void Banco::cantidadClientes()
{
    cout << Cuenta::retornarCantidad();
}

De todas forma funciona igual si llamamos al método estático por medio de un objeto de dicha clase:

void Banco::cantidadClientes()
{
    cout << cuenta1->retornarCantidad();
}
— @INFOUDO.OFICIAL

— Síguenos en Facebook@INFOUDO.OFICIAL

Categorías: #C++, #


[0] Atrás | Directorio
« Inicio
Apps Infoudo
Apps Infoudo ¡Descarga el icono directo en el menú de tu equipo!
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis


Comenta o lee lo que otros opinan

COMPÁRTELO:

Indica que te gusta y comparte

Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

NOCIONES BÁSICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Material de Apoyo del Curso de Programación - Lenguaje C++ - Periodo (Feb - May) del año en curso
Parámetros por valor y por referencia de objetos
Parámetros por valor y por referencia de datos simples
Métodos constantes (const)
Parámetros de un método constante (const)
Definición de constantes (const)
Directiva #define
Puntero this
Atributos estáticos de una clase


« Atributos estáticos de una clase  |  Puntero this »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Infoudo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/tuinfou Síguenos en Twitter @infoudomonagas
Síguenos en WhatsApp INFO UDO Síguenos en YouTube youtube.com/channel/UCuicPxpqv3C0p1qwaO1XSSQ
Síguenos en Facebook facebook.com/SergioAlemanFans Síguenos en Twitter @SergioAleman1 Síguenos en Instagram @sergioalemanfans
Síguenos en WhatsApp wa.me/qr/Y7Q232VLZPR5O1 Síguenos en Tiktok @sergioalemanoficial Síguenos en Tiktok @sergioalemanfans
Síguenos en Telegram t.me/SergioAlemanOficial Síguenos en YouTube youtube.com/channel/UCqcLSYCKx9pamla68nFMDkw
Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial
Síguenos en WhatsApp BolUDOoficial Síguenos en YouTube youtube.com/channel/UCJDooTJmROzAkBcbRrryvGA

Mis cuentas sociales

FB
Twitter
Pinterest
Instagram
Otras

Móvil: (0426 683 6955) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2023 Infoudo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR