본문 바로가기
반응형

전체 글109

[c#] 가상(virtual)함수와 오버라이딩(override) 가상(Virtual) 함수란? 부모 클래스에서 virtual 키워드를 사용하여 함수를 만들면 자식 클래스에서 해당하는 함수를 재정의 할 수 있도록 허락한다는 의미이다. 자식 클래스에서 override 또는 new 키워드가 사용 가능하다. override는 재정의 new는 새로운 함수이다.(아무런 키워드를 사용하지 않을 시 new와 동일) 자식클래스의 함수에서 base 키워드를 사용하여 부모 클래스의 함수를 호출 할 수 있다. 추상(abstract)과는 달리 자식에서의 구현은 선택이다. static, abstract, private, override 키워드와는 함께 사용할 수 없다. 예시 public class Animal { public virtual void walk() { Console.WriteLi.. 2021. 8. 20.
[c#] Boxing 과 Unboxing Boxing이란? 값 형식을 참조 형식으로 변환하는 것이다. 값 형식의 스택에 있는 데이터가 참조형식의 힙으로 복사된다. Boxing할 때는 새로운 개체가 만들어져야 하며, 이 작업은 할당 작업보다 최대 20배의 시간이 소모된다. ex) 값 형식 int가 참조 형식 string 으로 변환 되는 과정에서 Boxing이 발생한다. int a = 10; string str = a; Unboxing이란? 참조 형식을 값 형식으로 변환하는 것이다. 참조 형식의 힙에 있는 데이터가 스택으로 복사된다. Unboxing은 Boxing한 객체에서만 가능한다. Unboxing할 때는 캐스팅 과정에 할당 작업보다 4배의 시간이 걸릴 수 있다. ex) 참조 형식의 string이 값 형식의 int로 변환 되는 과정에서 Unbo.. 2021. 8. 20.
[c++] STL vector STL의 시퀀스 컨테이너중 하나인 vecotr에 대해 알아보자 Vector vector는 동적배열로 구현되어 있다. 각각의 원소들이 메모리 상에서 연속적으로 존재한다. 원소를 참조할 때 iterator를 이용하여 순차적으로 참조할 수 있다. index값으로 바로 참조도 가능하다. Heap 메모리를 쓰지만 개발자가 직접 delete해주지 않아도 사용되지 않으면 알아서 메모리를 해제한다. 장점 원소들을 임의의 순서로 접근할 수 있다. (선형시간 소요) index값으로 바로 참조 할 수 있다.(상수시간 소요) vector의 끝(push_back)이나 중간(insert)에 새로운 원소를 추가/제거 할 수 있다.(상수시간 소요) 원소에 접근하는것 과 vector의 끝에서 새로운 원소를 삽입/삭제하는것은 deque.. 2021. 8. 19.
[c++] STL Algorithm #include 에서 지원하는 몇가지 함수들을 알아보자. for_each(first, last, fn) 범위 내(first,last) 원소들을 순차적으로 함수 fn을 실행한다. 원소를 수정하지 않는다. #include #include #include void functionA(int n) { cout 2021. 8. 18.
반응형