fork(1) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int DAYS = 0x08;
  5.  
  6. class Date
  7. {
  8. private:
  9. uint8_t day, month, year;
  10. static int anzahl; // Klassenvariable
  11.  
  12. uint8_t bcdToUint(uint8_t const nybbles);
  13. public:
  14. Date():day(1), month(1), year(00) // Initialisierungsliste mit konstante Parameterwerten
  15. {anzahl++;}
  16. // Initialisierungsliste über parametrisierten Konstruktor
  17. Date(uint8_t _day, uint8_t _month, uint8_t _year):day(_day), month(_month), year(_year)
  18. { // entspircht: day = _day; ....
  19. anzahl++; // Klassenvariable erhöhen
  20. }
  21. ~Date() { // Destruktor
  22. printf("Good bye\n");
  23. anzahl--; // Klassenvariable erniedrigen
  24. }
  25. uint8_t GetDay(); // Methode
  26. static int GetAnzahl() // statische Methode
  27. {
  28. return anzahl;
  29. }
  30. };
  31.  
  32. uint8_t Date::bcdToUint(uint8_t const nybbles)
  33. {
  34. day = (nybbles>>4)*10 + (nybbles & 0x0F);
  35. return day;
  36. }
  37. uint8_t Date::GetDay()
  38. {
  39. //return bcdToUint(day & 0x3F);
  40. return day;
  41. }
  42.  
  43. int Date :: anzahl = 0; // statische Variable mit 0 initiallisieren
  44.  
  45. int main()
  46. {
  47. Date date1; // Instanziierung mit Standard Konstruktor und
  48. Date date2(18,4,15); // mit parametrisierten Konstruktor
  49.  
  50. printf("\n\t\tStatische Member Test\n\n");
  51. printf("Anzahl der Objekte: %d\n", Date::GetAnzahl()); // Zugriff auf stat. Methode über Klassenname
  52. printf("Anzahl der Objekte: %d\n", date1.GetAnzahl()); // Zugriff auf stat. Methode über Objektvariable
  53. //printf("Day 1: %d\n", date1.GetDay());
  54. //printf("Day 2: %d\n", date2.GetDay());
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
		Statische Member Test

Anzahl der Objekte: 2
Anzahl der Objekte: 2
Good bye
Good bye