#include <iostream>
using namespace std;
const int DAYS = 0x08;
class Date
{
private:
uint8_t day, month, year;
static int anzahl; // Klassenvariable
uint8_t bcdToUint(uint8_t const nybbles);
public:
Date():day(1), month(1), year(00) // Initialisierungsliste mit konstante Parameterwerten
{anzahl++;}
// Initialisierungsliste über parametrisierten Konstruktor
Date(uint8_t _day, uint8_t _month, uint8_t _year):day(_day), month(_month), year(_year)
{ // entspircht: day = _day; ....
anzahl++; // Klassenvariable erhöhen
}
~Date() { // Destruktor
printf("Good bye\n");
anzahl--; // Klassenvariable erniedrigen
}
uint8_t GetDay(); // Methode
static int GetAnzahl() // statische Methode
{
return anzahl;
}
};
uint8_t Date::bcdToUint(uint8_t const nybbles)
{
day = (nybbles>>4)*10 + (nybbles & 0x0F);
return day;
}
uint8_t Date::GetDay()
{
//return bcdToUint(day & 0x3F);
return day;
}
int Date :: anzahl = 0; // statische Variable mit 0 initiallisieren
int main()
{
Date date1; // Instanziierung mit Standard Konstruktor und
Date date2(18,4,15); // mit parametrisierten Konstruktor
printf("\n\t\tStatische Member Test\n\n");
printf("Anzahl der Objekte: %d\n", Date::GetAnzahl()); // Zugriff auf stat. Methode über Klassenname
printf("Anzahl der Objekte: %d\n", date1.GetAnzahl()); // Zugriff auf stat. Methode über Objektvariable
//printf("Day 1: %d\n", date1.GetDay());
//printf("Day 2: %d\n", date2.GetDay());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IERBWVMgPSAweDA4OwoKY2xhc3MgRGF0ZQp7CnByaXZhdGU6Cgl1aW50OF90IGRheSwgbW9udGgsIHllYXI7CglzdGF0aWMgaW50IGFuemFobDsgIC8vIEtsYXNzZW52YXJpYWJsZQoKICAgIHVpbnQ4X3QgYmNkVG9VaW50KHVpbnQ4X3QgY29uc3QgbnliYmxlcyk7CnB1YmxpYzoKCURhdGUoKTpkYXkoMSksIG1vbnRoKDEpLCB5ZWFyKDAwKSAgIC8vIEluaXRpYWxpc2llcnVuZ3NsaXN0ZSBtaXQga29uc3RhbnRlIFBhcmFtZXRlcndlcnRlbgoJe2FuemFobCsrO30KCS8vIEluaXRpYWxpc2llcnVuZ3NsaXN0ZSDDvGJlciBwYXJhbWV0cmlzaWVydGVuIEtvbnN0cnVrdG9yCglEYXRlKHVpbnQ4X3QgX2RheSwgdWludDhfdCBfbW9udGgsIHVpbnQ4X3QgX3llYXIpOmRheShfZGF5KSwgbW9udGgoX21vbnRoKSwgeWVhcihfeWVhcikKCXsgIC8vIGVudHNwaXJjaHQ6ICBkYXkgPSBfZGF5OyAuLi4uCgkJYW56YWhsKys7CQkJLy8gS2xhc3NlbnZhcmlhYmxlIGVyaMO2aGVuCgl9Cgl+RGF0ZSgpIHsJCQkJLy8gRGVzdHJ1a3RvcgoJCXByaW50ZigiR29vZCBieWVcbiIpOwoJCWFuemFobC0tOwkJCS8vIEtsYXNzZW52YXJpYWJsZSBlcm5pZWRyaWdlbgoJfQkJCQogICAgdWludDhfdCBHZXREYXkoKTsJCS8vIE1ldGhvZGUKICAgIHN0YXRpYyBpbnQgR2V0QW56YWhsKCkJLy8gc3RhdGlzY2hlIE1ldGhvZGUKICAgIHsKICAgIAlyZXR1cm4gYW56YWhsOwogICAgfQp9OwoKdWludDhfdCBEYXRlOjpiY2RUb1VpbnQodWludDhfdCBjb25zdCBueWJibGVzKQp7CiAgICBkYXkgPSAobnliYmxlcz4+NCkqMTAgKyAobnliYmxlcyAmIDB4MEYpOwogICAgcmV0dXJuIGRheTsKfQp1aW50OF90IERhdGU6OkdldERheSgpCnsKICAgIC8vcmV0dXJuIGJjZFRvVWludChkYXkgJiAweDNGKTsKICAgIHJldHVybiBkYXk7Cn0KCmludCBEYXRlIDo6IGFuemFobCA9IDA7CS8vIHN0YXRpc2NoZSBWYXJpYWJsZSBtaXQgMCBpbml0aWFsbGlzaWVyZW4KCmludCBtYWluKCkKewoJRGF0ZSBkYXRlMTsJCQkJLy8gSW5zdGFuemlpZXJ1bmcgbWl0IFN0YW5kYXJkIEtvbnN0cnVrdG9yIHVuZCAKCURhdGUgZGF0ZTIoMTgsNCwxNSk7ICAJLy8gbWl0IHBhcmFtZXRyaXNpZXJ0ZW4gS29uc3RydWt0b3IKCglwcmludGYoIlxuXHRcdFN0YXRpc2NoZSBNZW1iZXIgVGVzdFxuXG4iKTsKCXByaW50ZigiQW56YWhsIGRlciBPYmpla3RlOiAlZFxuIiwgRGF0ZTo6R2V0QW56YWhsKCkpOwkvLyBadWdyaWZmIGF1ZiBzdGF0LiBNZXRob2RlIMO8YmVyIEtsYXNzZW5uYW1lCglwcmludGYoIkFuemFobCBkZXIgT2JqZWt0ZTogJWRcbiIsIGRhdGUxLkdldEFuemFobCgpKTsJLy8gWnVncmlmZiBhdWYgc3RhdC4gTWV0aG9kZSDDvGJlciBPYmpla3R2YXJpYWJsZQoJLy9wcmludGYoIkRheSAxOiAlZFxuIiwgZGF0ZTEuR2V0RGF5KCkpOwoJLy9wcmludGYoIkRheSAyOiAlZFxuIiwgZGF0ZTIuR2V0RGF5KCkpOwogIHJldHVybiAwOwp9Cg==