본문 바로가기

분류 전체보기

(127)
[C++] 함수 템플릿 특수화 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 우리는 하나의 함수 혹은 클래스를 다양한 자료형으로 사용 사용할 수 있게 템플릿을 사용합니다. 즉, 템플릿에는 일반화의 의미가 내포되어 있다고 할 수 있습니다. 그런데 이번에 다뤄볼 함수 템플릿 특수화는, 일반화를 위해 생성한 함수 템플릿에서 특정 조건에 해당하는 경우를 따로 지정하는 것입니다. 코드를 통해 설명해보겠습니다. template T getMax(T x, T y) { return (x > y) ? x : y; } 여기 template을 사용한 getMax 함수가 있습니다. template을 사용했으니 다양한 자료형을 이 getMax함수에서 사용할 수 있습니다. 그런데 getMax 함수를 만든 프로그래머는 이용자가 ..
[C++] 자료형이 아닌 템플릿 매개변수 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 이번에는 템플릿의 매개변수 중 자료형이 아닌 매개변수를 다뤄보겠습니다. template class MyArray { private: int m_length; T* m_data; . . 위의 코드 블록은 앞선 포스팅에서 클래스 템플릿을 다룰 때 사용한 클래스입니다. 여기서 템플릿의 매개변수는 typename T 단 하나입니다. 배열의 길이를 m_length로 받고, 사용할 자료형의 포인터에 멤버를 저장하는 방식을 사용했습니다. int main() { MyArray my_array(100); . . main 함수에서 이런 식으로 템플릿 매개변수 T의 자리에 사용할 자료형을 입력하고, 생성자를 통해 배열의 길이를 정했습니다. te..
경계선(Border, 2018) 개봉일: 2018년 8월 31일(스웨덴)감독: 알리 압바시 영화는 바닷가를 향하고 있는 주인공 티나의 뒷모습으로 시작했던 것 같다. 티나는 손가락에 올라있는 벌레를 응시하다 벌레를 보내준다. 티나는 출입국 세관 직원이다. 항만에서 출입국 게이트를 지나는 사람들을 지켜보다 수상한 냄새가 나면 그 사람을 불러 세운다. 티나는 스스로 감정을 맡을 수 있다고 말한다. 그리고 그런 티나의 후각은 백이면 백 술을 밀수하는 사람을 잡아내고, 아동 포르노를 국외로 빼돌리려는 사람도 잡아낸다. 지극히 현실적으로 묘사되는 영화 속 현실과, 소설 속에 등장할법한 티나의 능력은 영화의 초반부터 보는 이로 하여금 묘한 불편함을 느끼도록 만든다. 동료 직원 옆에서 마치 마약탐지견처럼 코를 벌렁이며 감정을 맡는 티나의 모습은 보통..
[NETFLIX] Unnatural Selection: 부자연의 선택 넷플릭스 총 4화 Unnatural Selection. 한국어 제목은 번역을 거의 그대로 따른 '부자연의 선택'이다. 제목을 조금 더 분석해보면 Unnatural. 자연이 아닌 것의. 혹은 부자연스러운 Selection. 선택 이걸 부자연스러운 선택으로 읽을 수도 있고, 자연이 아닌 다른 무엇의 선택으로 읽을 수도 있다. 어찌 됐든 모두 unnatural하다. 유전학과 관련하여 내가 아는 지식은 종잇장 한 장과 같지만, 그럼에도 아는 게 있다면 찰스 다윈이 주장한 '자연선택설(the theory of natural selection)이다. 바다, 땅, 그리고 하늘에 존재하는 모든 종과 개체들 중, 그들이 처한 환경에서 가장 잘 살아남을 수 있는 유전자를 가진집단만이 살아남아 유전자와 개체를 보존한다는 설..
[C++] 클래스 템플릿 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) class MyArray { private: int m_length; int* m_data; public: MyArray() { m_length = 0; m_data = nullptr; } MyArray(int length) { m_data = new int[length]; m_length = length; } ~MyArray() { reset(); } void reset() { delete[] m_data; m_data = nullptr; m_length = 0; } int& operator [](int index) { assert(index >= 0 && index < m_length); return m_data[inde..
대학의 의미 대학이란 무엇인가. 라는 거대담론을 입에 담아 글로 적을 능력도 생각도 나는 없다. 그냥 수업 시간에 느낀 점을 적어본다. 수업시간에 많은 학생들이 노트북을 사용하는 풍경은 내가 군대를 다녀와 학교에 다시 다니며 달라졌다고 느낀 풍경 중 하나다. 정말 많은 학생들이 노트북을 사용하거나 태블릿을 사용한다. 그중에는 필기를 하는 학생도 있고 다른 과제를 하는 학생도 있고 메신저를 주고받는 학생도 있고 옷을 구경하는 학생도 있고 전날 밤의 해외축구 경기 하이라이트를 보는 학생도 있다. 가장 많이 보인 노트북 사용의 행태가 대강 이렇고 나는 수업 중에 노트북으로 야구 게임을 하는 학생까지 봤다. 그것의 잘잘못을 내가 따질 수는 없다. 어예 따질 수도 없는지는 모르겠지만 그 잘잘못을 따지자고 이 글을 적기 시작한..
[C++] 함수 템플릿 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) int getMax(int x, int y) { return (x > y) ? x : y; } 여기 getMax 함수가 있습니다. int형 변수 x와 y를 매개변수로 받은 후, 둘을 비교해서 x가 y보다 크면 x를, x보다 y가 크면 y를 출력합니다. 그런데 getMax 함수를 int형 뿐만 아니라 float, double, char, 등등.. 여러 자료형들도 대상으로 사용한다고 합니다. float getMax(float x, float y) { return (x > y) ? x : y; } double getMax(double x, double y) { return (x > y) ? x : y; } 그럼 우리는 이렇게 같은..
[C++] 변환 생성자와 explicit 이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요 ;) 이번에는 클래스를 다룰 때 사용할 수 있는 변환 생성자Converting constructor, explicit, delete를 다뤄보려고 합니다. class Add { private: m_int; public: Add(int value = 0) : m_int(value) {} friend print(Add add); }; void print(Add add) { cout