728x90
< Member initializer list >
생성자 부분과 겹쳐 포스팅할 걸 그랬나봐;; constructor initializer를 사용할 때 다음과 같이 :콜론으로 initialize를 list형태로 시켜줄 수도 있다. 단순한 구조는 다음과 같다.
class Something
{
private:
int m_i;
double m_d;
char m_c;
public:
Something()
: m_i(1), m_d(3.14), m_c('a')
void func()
{
}
};
- 코드 -
/*
<2020.04.08>
[8.4강 생성자 맴머 이니셜라이져 리스트 (Member initializer list) ]
*/
#include <iostream>
using namespace std;
class B
{
private:
int m_b;
public:
B(const int& m_b_in)
: m_b(m_b_in)
{ }
};
class Something
{
private:
int m_i;
double m_d;
char m_c;
int m_arr[5];
B m_b;
public:
Something()
: m_i(1),
m_d(3.14),
m_c('a'),
m_arr{1,2,3,4,5} // 이런식으로 가능하다!!,
// 물론 uniform initializer로도 가능하지만, 이떄는 형변환을 지원하지 않는다.
,m_b(m_i -1) // 매개변수 물론 가능.
{
m_i *= 2; // 리스트 실행 뒤에 이게 실행된다.
m_c += 1;
}
void print()
{
cout << m_i << " " << m_d << " " << m_c << endl;
for(auto& e : m_arr)
cout << e << " ";
cout << endl;
}
};
int main()
{
Something som;
som.print();
return 0;
}
- 출력 결과 -
728x90
'[C,C++]' 카테고리의 다른 글
[C,C++ 개념정리] Constructors(생성자) (0) | 2020.04.07 |
---|---|
[C,C++ 개념정리] encapsulation, access specifiers & functions (0) | 2020.04.05 |
[C,C++ 개념정리] 객체지향의 시작 (2) | 2020.04.02 |
[C,C++ 개념정리] Ellipsis, 생략부호 (0) | 2020.03.27 |