๊ตฌ์กฐ์ฒด์์ ํด๋์ค๋ก ¶
~cpp
struct Date
{
int d, m, y;
};
void init_date(Date *date, int d, int m, int y)
{
date->d = d;
date->m = m;
date->y = y;
}
void add_year(Date *date, int n)
{
...
}
void add_month(Date *date, int n)
{
...
}
void add_day(Date *date, int n)
{
...
}
~cpp
class Date
{
int d, m, y;
public:
void init(int dd, int mm, int yy);
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
void Date::init(int dd, int mm, int yy)
{
d = dd;
m = mm;
y = yy;
}
void Date::add_year(int n)
{
...
}
void Date::add_month(int n)
{
...
}
void Date::add_day(int n)
{
...
}
์ ๊ทผ ์ ์ด ¶
private - ํด๋์ค ๋ฉค๋ฒ๋ง ์ฌ์ฉ ๊ฐ๋ฅ
public - ์ธ๋ถ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
public - ์ธ๋ถ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
์์ฑ์ ¶
~cpp
class Date
{
int d, m, y;
public:
Date(int dd, int mm, int yy);
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
Date::Date(int dd, int mm, int yy)
{
d = dd;
m = mm;
y = yy;
}
~cpp
class Date
{
int d, m, y;
public:
Date();
Date(int yy);
Date(int dd, int mm, int yy);
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
Date::Date()
{
d = m = y = 1;
}
Date::Date(int yy)
{
d = m = 1;
y = yy;
}
Date::Date(int dd, int mm, int yy)
{
d = dd;
m = mm;
y = yy;
}
~cpp
class X
{
const int i;
Club c;
Club& pc;
public:
X(int ii, const string& n, Date d, Club& c) : i(ii), c(n, d), pc(c) {}
}
์๋ฉธ์ ¶
~cpp
class Date
{
int d, m, y;
public:
Date();
Date(int yy);
Date(int dd, int mm, int yy);
~Date();
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
Date::~Date()
{
...
}
static ๋ฉค๋ฒ ¶
- ๋ชจ๋ ์ธ์คํด์ค์ ์ํด ๊ณต์ ๋จ
- ์ธ์คํด์ค ์์ด ์ ๊ทผ ๊ฐ๋ฅ
- ์ธ์คํด์ค ์์ด ์ ๊ทผ ๊ฐ๋ฅ
~cpp
class Date
{
int d, m, y;
static Date default_date;
public:
Date();
static void set_default(int dd, int mm, int yy);
};
Date Date::default_date;
void Date::set_default(int dd, int mm, int yy)
{
default_date.d = dd;
default_date.m = mm;
default_date.y = yy;
}
Date::Date()
{
d = default_date.d;
m = default_date.m;
y = default_date.y;
}
const ๋ฉค๋ฒ ํจ์ ¶
~cpp
class Date
{
int d, m, y;
public:
Date();
Date(int dd, int mm, int yy);
int year() const;
int month() const;
int day() const;
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
int Date::year() const
{
return y;
}
int Date::month() const
{
return m;
}
int Date::day() const
{
return d;
}
this ํฌ์ธํฐ ¶
~cpp
class Date
{
int d, m, y;
public:
void add_year(int n);
void add_month(int n);
void add_day(int n);
};
void Date::add_year(int n)
{
if(this->d == 29 && this->m == 2 && !leapyear(this->y + this->n))
{
this->d = 1;
this->m = 3;
}
this->y += this->n;
}
mutable ¶
~cpp
class Date
{
int d, m, y;
mutable bool cache_valid;
mutable string cache;
void compute_cache_value() const;
public:
Date();
string string_rep() const;
};
string Date::string_rep() const
{
if(cache_valid == false)
{
compute_cache_value();
cache_valid = true;
}
return cache;
}










