분류 전체보기

[Effective C++] #16 new 및 delete 사용 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 16 "new 및 delete를 사용할 때는 형태를 반드시 맞추자"에 해당하는 내용입니다. 동적 할당 코드 작성 중 일시적으로 필요한 만큼의 자원을 할당받고 불필요한 자원 낭비를 방지하는 메모리 할당 방법입니다. 우리가 작성한 program이 정상적으로 실행되기 위해 메모리 공간이 필요합니다. 이때, 프로세스의 runtime 중 필요한 메모리 크기만큼을 컴퓨터에 일려 줌으로써 자원을 보다 효율적으로 사용할 수 있도록 해줍니다. 동적 할당은 heap 영역에서 이루어지고, new를 ..
[Effective C++] #15 자원 관리 객체, 자원에 대한 접근 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 15 "자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자"에 해당하는 내용입니다. 자원 관리 객체, 그리고 자원에 대한 접근 자원 관리 객체는 외부(API)에서 해당 자원을 접근할 수 있도록 허용해야 합니다. 물론, 외부의 접근을 허용하는 행동은 캡슐화에 위배되는 행동입니다. 하지만, 자원 관리 객체의 목적은 자원을 외부로부터 숨기기 위함이 아니라, 성공적으로 자원 해제를 수행하기 위 위함입니다. 자원 관리 객체의 자원들에 접근하는 방법은 두 가지가 있..
[Effective C++] #14 자원 관리 객체 심화 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 14 "자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자"에 해당하는 내용입니다. 자원 관리 객체의 복사 class Lock { public: Lock (Mutex* pm) : mutexPtr(pm) {lock(mutexPtr);} ~Lock(){unlock(mutexPtr);} private: Mutex* mutexPtr; } #include using namespace std; int main() { Mutex m; Lock m1(&m); ...// m1 객체의 소멸자 호출 및..
[Effective C++] #13 자원 관리 객체, std::auto_ptr, std::shared_ptr Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 3장 "자원 관리", 항목 13 "자원 관리에는 객체가 그만"에 해당하는 내용입니다. std::auto_ptr A_클래스* createAClass(); // A클래스 객체를 가리키는 포인터를 반환, 팩토리 함수. void f() { A_클래스* pA = createAClass();// 팩토리 함수 호출 ... delete pA;// pA 객체의 자원을 해제합니다. } *******************std::auto_ptr을 적용*****************..
[Effective C++] #11 중복 참조와 자기 대입 연산자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 11 "operator=에서는 자기 대입에 대한 처리가 빠지지 않도록 하자"에 해당하는 내용입니다. 중복 참조에 의한 자기 대입 연산 class Wclass {...}; Wclass w; ... w = w; *px = *py;// 서로 같은 객체를 가리킬 수도 ... a[i] = a[j]; // 같은 값일 수도... 보통 자기 대입 연산은 적법한 코드로 분류됩니다. 쉽게 말해, 사용자 쪽에서 문제가 발생한지 모를 수 있죠. 위 예제 코드는 일단 보기에 크게..
[Effective C++] #10 대입 연산자와 *this의 참조자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 10 "대입 연산자는 *this의 참조자를 반환하게 하자"에 해당하는 내용입니다. 대입 연산자 대입연산자 = { =, *=, /=, %=, +=, -=, =, &=, ^=, |= } class A { public: ... A& operator=(const A& 우변객체){ ... return *this; } }; 대입 연산자는 위 코드에서 살펴본 대로, "= *= /= %= += -= = &= ^= |="를 의미합니다. "="의 경우 단순 할당 연산자로..
[Effective C++] #9 가상 함수를 호출하는 생성자, 소멸자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 9 "객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자"에 해당하는 내용입니다. 생성자 내부의 가상 함수 class 기본클래스 { public: 기본클래스 (); virtual void 가상함수 () const = 0; ... }; 기본클래스::기본클래스 () { 가상함수 (); } class 파생클래스: public 기본클래스 { public: virtual void 가상함수 () const; ... }; // 파생클래스 객체 생성 ..
[Effective C++] #8 소멸자가 던지는 예외 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 8 "예외가 소멸자를 떠나지 못하도록 붙들어 놓자"에 해당하는 내용입니다. 예외를 던지는 소멸자 class DB연결 { public: ... static DB연결 create();// DBConnection 객체 반환 함수 void close();// DB연결을 끊는 함수 }; class DB연결_관리 { publlic: ... ~DB연결_관리(){//소멸자 안에서 호출하는 close 함수 db.close();// 또는 소멸자 안에서 예외를 던지는 함수 } priva..
[Chat-App]#2 Socket.io 개념 Socket.io, React, 그리고 Node.js를 활용한 실시간 채팅 앱 프로젝트를 진행합니다. 2021.04 ~ 2021.06 동안 기초적인 개발 작업 완료 후 기본 개념과 수정 작업을 기록합니다. Socket.io 기본 개념 공부 및 정리 #Socket.Io ⚡Concept www.notion.so
[Chat-App]#1 개발 계획 Socket.io, React, 그리고 Node.js를 활용한 실시간 채팅 앱 프로젝트를 진행합니다. 2021.04 ~ 2021.06 동안 기초적인 개발 작업 완료 후 기본 개념과 수정 작업을 기록합니다. 개발 계획 1. Airbnb style guide 적용 클린 코드를 통해 코드의 가독성과 유지보수성을 향상시키기 위해, Airbnb 스타일 가이드를 적용합니다. 개발의 효율성을 높여주는 "Eslint"와 "Prettier" 툴들을 Airbnb style 가이드에 적용합니다. ESLint & Prettier, Airbnb Style Guide로 설정하기 코드의 가독성을 높혀주고 에러나 컨벤션에 관한 경고 해주는 유명한 툴이 있는데바로 ESLint와 Prettier입니다...
Hardii2
'분류 전체보기' 카테고리의 글 목록 (46 Page)