이니셜라이져 리스트
사용자정의자료형에서 생성자,대입연산자를 만들때 편하게 사용하는것
array등에 사용하는 {}를 말한다.
initalizer_list를 사용한다.
파라미터 initalizer_list로 받아 변환해준다고 생각하면된다
#include <iostream>
#include <cassert>
#include <initializer_list>
using namespace std;
class IntArray {
private:
unsigned m_length = 0;
int *m_data = nullptr;
public:
IntArray(unsigned length)
:m_length(length) {
m_data = new int[m_length];
}
IntArray(const std::initializer_list<int> & list)
:IntArray(list.size()){
cout << "initializer_list" << endl;
int count = 0;
for (auto & element : list) {
m_data[count] = element;
++count;
}
}
IntArray& operator =(const std::initializer_list<int> & list)
{
delete[] m_data;
m_length = list.size();
m_data = new int[m_length];
cout << "= initializer_list" << endl;
if (m_data != nullptr) {
int count = 0;
for (auto & element : list) {
m_data[count] = element;
++count;
}
}
else {
m_data = nullptr;
}
return *this;
}
~IntArray() {
delete[] this->m_data;
}
friend ostream & operator << (ostream &out, IntArray &iA) {
for (unsigned i = 0; i < iA.m_length; i++) {
out << iA.m_data[i] << " ";
}
out << endl;
return out;
}
};
int main()
{
auto il = { 1,2,3 };
IntArray iA{ 12,3,3 };
cout << &iA << endl;
cout << iA << endl;
iA = { 1,2,3,4,5,6 };
cout << &iA << endl;
cout << iA << endl;
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ 객체들의 관계, 집합관계 (0) | 2019.08.23 |
---|---|
c++ 객체들의 관계,구성관계 (0) | 2019.08.23 |
c++ 대입연산자 오버로딩,깊은복사,얕은복사 (0) | 2019.08.21 |
c++ 변환생성자,explicit,delete (0) | 2019.08.21 |
c++ 복사생성자,복사초기화,RVO (0) | 2019.08.21 |