Код: Выделить всё
class CDemo{
char m_c;
int m_i1;
int m_i2;
int &m_li;
public:
CDemo(int val, char c) : m_i1(val>0 ? 0 :val ),
m_i2(val>0 ? val :0 ),
m_li(val>0 ? m_i1:m_i2),
m_c(c) {}
CDemo(int val) : CDemo(val, '\0') {}
CDemo(char c) : CDemo(0 , c ) {}
CDemo() : CDemo(0 , '\0') {}
};
Мне надо много конструкторов, но просто лень каждый раз писать одну и туже инициализацию членов класса...
Единственное что мне понравилось, так это (компилябельный класс):
Код: Выделить всё
class CDemo{
char m_c;
int m_i1;
int m_i2;
int &m_li;
public:
#define Constructor(val, c) \
: m_i1(val>0 ? 0 :val ),\
m_i2(val>0 ? val :0 ),\
m_li(val>0 ? m_i1:m_i2),\
m_c(c) {}
CDemo(int val, char c) Constructor(val, c )
CDemo(int val) Constructor(val, '\0')
CDemo(char c) Constructor(0 , c )
CDemo() Constructor(0 , '\0')
#undef Constructor
};