구조체에서 클래스로 ¶
~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)
{
...
}
생성자 ¶
~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;
}










