전체 글

[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입니다...
[Effective C++] #7 기본 클래스와 가상 소멸자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 7 "다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자"에 해당하는 내용입니다. 가상 소멸자 virtual ~Class_Name( ) {...} "소멸자"란 객체의 소멸 시점에 자원을 정상적으로 해제하기 위해 호출하는 함수입니다. 이 소멸자를 "virtual" 키워드와 함께 사용하는 것을 "가상 소멸자"라고 합니다. "가상 소멸자"는 호출될 때, 다형성을 지원하는 기본 클래스를 상속받는 자식 클래스의 소멸자를 호출 한 뒤에 부모 클래스의 소..
[Effective C++] #6 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 6 "컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 막아 버리자"에 해당하는 내용입니다. 사용자 정의 멤버 함수 class Assets {...}; Assets h1; Assets h2; Assets h3 (h1); Assets h3 = h2; 세상에 모든 자산은 한 개씩 존재한다고 가정해봅시다. 각 자산마다 "Assets" 클래스를 통해 생성되며, 생성된 객체들은 서로 같을 수 없습니다. 따라서, 위 예제 코드처럼 "h3"..
[Effective C++] # 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 2장 "생성자, 소멸자 및 대입 연산자", 항목 5 "C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자"에 해당하는 내용입니다. 생성자, 소멸자, 복사 생성자, 복사 대입 연산자 class Empty {}; 위 예제 코드는 비어 있는 클래스를 정의했습니다. 하지만, C++는 비어 있는 클래스 안에 몇 개의 멤버 함수를 자동으로 생성합니다. 이 멤버 함수들은 "생성자", "소멸자", "복사 생성자", 그리고 "복사 대입 연산자"입니다. 이들은 모두 public 멤버이며, inl..
[Effective C++] #4 객체의 초기화 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 1장 'C++ 기본', 항목 4 "객체를 사용하기 전에 반드시 그 객체를 초기화하자"에 해당하는 내용입니다. 초기화 int x; double x; class Point {...}; Point p; ********************* int x = 0; double x = 0; 위 예제 코드를 살펴보겠습니다. C++의 경우, 어떤 상황에서는 변수의 값이 초기화되기도, 그렇지 않기도 합니다. 대부분의 경우, 무작위 비트의 값을 읽어 객체의 내부가 알 수 없는 이상한 값을 갖게 되죠. C++의 vector의 원소는 확실히 ..
[Effective C++] #3_const 사용 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 1장 'C++ 기본', 항목 3 "낌새만 보이면 const를 들이대 보자!"에 해당하는 내용입니다. #0. const의 정의 char sayHello[] = "Hello!"; const char *p = sayHello;//포인터가 가리키는 데이터를 상수화 char* const p = sayHello;//포인터가 상수화 const char* const p = sayHello;// 둘 다 상수화 "const" 키워드가 붙은 객체는 외부 변경을 불가능하게 합니다. 따라서, 객체의 내용이 불변이어야 한다는 소스코드 제작자의 ..
[Effective C++] #2_#define 사용의 대안 Scott Meyers의 "Effective C++"를 통해, C++ 구현에 필요한 개념들을 이해하고, 기록하기 위함입니다. 해당 항목은 1장 'C++ 기본', 항목 2 "#define을 쓰려거든, const, enum, inline을 떠올리자"에 해당하는 내용입니다. 1. #define, 매크로 const, 상수 #define ASPECT_RATIO 1.653 const double AspectRatio = 1.653; "#define" 사용의 경우 소스코드가 컴파일러에게 넘어가기 전, 선행 처리자가 "이름"을 밀어버리고, 숫자 상수로 바꾸어버립니다. 결과적으로, "ASPECT_RATIO"는 컴파일러가 사용하는 기호 테이블에 들어가지 않습니다..
Hardii2
개발 블로그