개인공부/C++(44)
-
iterator (list)
리스트노드를 가리키는 ite rator를 만들어보았다. 먼저 begin 과 end를 지정해주었다. end iterator의 경우에는 마지막다음칸을 지시하고있다. erase의 경우에는 헤드노드를 지칭할경우에 이전노드가 없으므로 조건을 설정하였다. 그리고 조건으로 end노드도 설정해야하지만 일단은 넘어갔다. 다음 insert 함수를추가하였다. insert의 경우에는 이터레이터가 가리키는 노드앞으로 노드를 추가해주므로 조건으로 여러가지를 추가해 주었다. 다음에 기회가 생기면 다시한번 혼자힘으로 템플리 클래스 가변배열과 리스트를 코딩해볼 예정이다.
2022.12.11 -
iterator
가변배열 클래스안에 또다른 클래스인 iterator 를 만들어 보았다. inner clas 의 경우에는 포함하고 있는 클래스의 private 멤버에 접근이 가능하다. iterator 의 경우에는 가변배열내의 배열을 가리키는 기능을 하며 iterator 가 가리킬 데이터를 관리하는 가변배열 주소데이터들의 시작 주소가리키는 데이터의 인덱스 값 을 3가지의 인자로 가지고 있다 만약에 iterator 가 가변배열의 주소를 가지고 있지 않으면 배열의 크기가 커졌을때 데이터을의 시작주소가 달라지므로 조건을 이용하여 가변배열이 확장한지 안한지를 알 수 있다. * 연산자의 경우에는 포인터와 유사하게 리턴값을 이터레이터가 가리키는 배열의 데이터 값을 받아온다. 다음으로는 ++ 증감 연산자를 구현했다 조건들을 확인하였고 ..
2022.12.10 -
template class list
c++ 내의 list 기능을 직접 템플릿 클래스를 이용하여 구현해 보았다. C++ 에서는 struct 와 clss 는 기본적인 접근자 지정자가 각각 public,private라는 차이점이 있지만 작동방식이 거의 일치한다고 한다. 그러므로 나는 비교적 간단한 구조는 struct 를 이용하고 복잡한 구조는 class 로 구현하였다. 먼저 탬플릿은 클래스에 사용자가 원하는 자료형을 넣어서 클래스를 생성해준다. 그러므로 각각의 원하는 자료형의 클래스를 만들지 않아도 탬플릿을 만들면 어떠한 자료형이라도 그에 맞는 클래스를 손쉽게 생성할 수 있다. 그러므로 탬플릿의 경우 자료형에 따라 생성하므로 헤더파일에 구현하는데 헤더파일에 구성해야 자신이 지정한 자료형을 확인하고 클래스를 생성할 수 있다. CList 클래스의 ..
2022.12.09 -
참조자 &
C 언어에서는 어떠한 변수를 가리키고 싶을 땐 반드시 포인터를 사용해야만 했지만 C++에서는 다른 변수나 상수를 가리키는 방법으로 또 다른 방식을 제공하는데, 이를 바로 참조자(레퍼런스- reference)라고 한다. 참조자를 통해서 함수를 실행하면서 참조자를 이용하여 a의 값을 수정할 수 있다. 레퍼런스 특징 레퍼런스는 반드시 처음에 누구의 별명이 될 것인지 지정해야 한다. 레퍼런스가 한 번 별명이 되면 절대로 다른 이의 별명이 될 수 없다. 레퍼런스는 메모리 상에 존재하지 않을 수 도 있다.
2022.12.08 -
class(3)
오늘은 간다한 클래스를 만들었다. private 에는 년, 월 ,일을 정의하여 외부에서 접근이 불가능하게 설정했다. 클래스 호출함수로는 날짜 출력, 몇일이 지난지 대입받고 날짜를 계산했다. 계산함수는 private칸에 있어서 외부에서 접근이 불가능하게 설정했다. 그후에는 연산자 오버로딩을 통해서 + 연산자를 만들었다. 만약에 리턴값을 자기자신으로 하면 계속해서 연산이 가능하다.
2022.12.07 -
class(2)
이번에는 가변배열을 클래스로 구현해 보았다. 먼저 헤더파일에 클래스를 선언하였다. 그 이후에는 가변배열과 동일하게 구조를 설정하였다. 하지만 int* arr =new int[length]; 이여야 하지만 int* arr =new int(length) 로 잘못 적어나서 계속해서 오류가 발생했었다. int(length) 가 붙는것이 문법 오류가 되지않아서 찾는데 오랜시간이 걸렸다. 그 이후에는 배열이 의도대로 생성되지 않아서 힙버퍼가 발생해서 문제가 발생하였다. 다음부터는 조심해서 코드를 작성하자! 그리고 new[] 는 메모르해제할때 delete[] 를 사용해야한다.
2022.12.06