본문 바로가기
728x90
반응형

C++ 공부19

댕글링 포인터 (Dangling Pointer) 댕글링 포인터? -적절한 타입의 유효한 객체를 가리키고 있지 않은 포인터를 의미 -즉, 해제된 메모리 영역을 가리키고 있는 포인터를 댕글링 포인터라고 한다. 코드를 통해 댕글링 포인터가 뭔지 자세히 이야기 해보자. 다음과 같이 코드를 작성하여 numA를 출력하면 문제없이 1이 출력되고, numA의 메모리가 해제될 것이다. int* numA = new int(1); std::cout 2023. 6. 19.
lambda Study about lambda function & STL/function object 함수호출 연산자 예제 void pritf(); int main(void) { printf(...); // call return 0; } printf는 주소 그리고 (...)을 함수호출 연산자라고하며 함수호출연산자 안의 내용을 매개변수라한다. 함수호출연산자는 재정의가 가능하다. 즉 함수자체를 객체화 가능 ex)call back logic #include 선언을 통해 사용 주로 람다식과 같이 사용됨 람다식 예제 void TestFunc(char* pszParam, std::function param) { std::cout 2021. 8. 22.
exception Study about exception handling try {} ~ catch() 문을 통한 구조화된 예외처리가 있음 try내 throw 가 나오면 객체로 떼어서 생각 구조화된 예외처리를 잘하자 함수속에서 throw 할 경우 void ExceptTest1() { int a; if(!a) { throw a; } } void ExceptTest2() { char ch; if(!ch) { throw ch; } } int main(void) { try { ExceptTest1(); ExceptTest2(); } catch (int test1) { std::cout 2021. 8. 22.
template Study about template 뭔가를 찍어내는 틀이라 생각 생산성이 향상됨 template 종류 function template class template class template 예제 template class Test { public: Test() { m_Data = 0; } ~Test() {} void SetData(const T& t) { this->m_Data = t; } T GetData() { return this->m_Data; } T operator+ (const T& t) { return (this->m_Data + t); } private: T m_Data; }; int main(void) { Test a; a.operator+(6); std::cout 2021. 8. 20.
relational Study about relational 관계 종류 수직 - 상속 수평 집합 수평적 관계 class를 instance화 한다 이때 바깥에서 pointing하는걸 인터페이스라고 하고 대부분 method로 구현 서로 다른 두 클래스가 긴밀하게 붙어야 할 경우가 생긴다 (연예인과 매니저관계) 즉 서로 독립적이지만 응집적임이 필요할 경우 어떤건 public 어떤건 private protected로 규정한 접근제어를 한번에 무력화 시키는 방법이 friend 키워드다 friend로 선언 가능한 대상 함수 클래스 관계의 필요성 (자료구조 링크드리스트를 통한 예제) class MyList {}; // friend MyList {}; class MyNode {}; class User : public MyNode {}; .. 2021. 8. 20.
inheritance 04 Study about inheritance (심화편 시작) pure virtual function 선언은 있으나 정의는 없음 (C에서는 link 에러가 났음) 이런 흐름이 있다라고 설계만 해놓고 아직 구현을 안했을때 사용 순수가상함수 예제 class MyInterface { virtual int GetData() const = 0; }; class MyData : public MyInterface { virtual int GetData() const { // 재정의 } } 순수가상함수들은 파생클래스에서 꼭 재정의를 해줘야한다 예를들면 MyCase는 휴대폰 케이스제작 MyInterface는 핸드폰 규격이 담겨있는 클래스라면 MyCase에선 핸드폰 크기만 알면될뿐 그 속의 RAM등은 알 필요 없기에 이런경우.. 2021. 8. 20.
728x90
반응형