C++
2020. 10. 7. 16:17ㆍ데일리/오늘
1. obscure expression
#1
template<class ItemType>
CountedQueueType<ItemType>::CountedQueueType(int max):QueueType(max)
{
length = 0;
}
- class를 처음 선언할 때 빼고는 늘 <>가 따라다닌다.
- ::를 통해서 클래스에 접근하며, 상속받은 sub class에서는 :를 하나만 써도 된다.
- 위의 statement는 max를 입력받아, super class의 QueueType에 max를 입력하는 행위를 실행한다는 뜻이다.
#2.
template<class ItemType>
void CountedQueueType<ItemType>::enqueue(ItemType item)
{
QueueType<ItemType>::enqueue(item);
length++;
}
super class에 접근하는 방법을 보인다.
#3.
QueType::QueType(const QueType& que)
{
delete[] this->items
this->items = new int[que.maxQue];
for (int i = 0;i < que.maxQue;i++)
{
this->items[i] = que.items[i];
}
}
선언과 동시에 복사, 혹은 선언과 동시에, 혹은 함수에 인자로 등은 생성시기 이므로
delete할 item이 없다, 따라서 delete를 빼야한다. 깊은복사 얘기.
#4. 복사생성자도 "생성자" 이다. 이곳에서 데이터 멤버를 초기화 해줘야 한다.
-
복사생성자에 대해 어렵게 생각할 필요가 없다, <데이터멤버> 일반변수 모두를 그대로 가져오고
front = que.front;
포인터변수에 대해서는 모두 new로 새로 할당해 주면 된다.
그리고 복사생성자가 아닌, 복사 대입 연산자에 대해서는 delete를 반드시 행해줘야 한다. #3 참고
'데일리 > 오늘' 카테고리의 다른 글
인코딩(+=) (0) | 2020.10.20 |
---|---|
인코딩(임시) (0) | 2020.10.17 |
memory는 lvalue, elem, func_pointer, vector (0) | 2020.10.02 |
static 변수의 선언은 (0) | 2020.09.12 |
소스 코드 정렬 키 (0) | 2020.09.11 |