본문 바로가기
반응형

전체 글193

Effective C++ 항목8 : 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 Effective C++ 항목8 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 클래스의 인스턴트, 즉 객체가 소멸할 때 각종 예외를 처리할 수 있다. class DBConnection { public: ... static DBConnection create(); void close(); }; class DBConn // DBConnection 객체를 관리하는 클래스 { public: ... ~DBConn() { db.close(); } // 데이터베이스 연결이 항상 닫히도록 // 확실히 챙겨주는 함수 private: DBConnection db; }; 소멸자의 db.close()에서 예외가 발생할 수 있음. 대응책은? 1) 프로그램을 바로 끝내버림. abort()호출 DBConn::~DBConn() { t.. 2023. 2. 6.
Effective C++ 항목7 : 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자. Effective C++ 항목7 : 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자. 객체에서 메모리 등 자원의 누수를 막기 위해서는 소멸자 호출 class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); ... }; class AtomicClock: public TimeKeeper { ... }; class WaterClock: public TimeKeeper { ... }; class WristClock: public TimeKeeper { ... }; ... // 팩토리 메서드 패턴 TimeKeeper* ptk = getTimeKeeper(); ... delete ptk; 문제 발생! 기본 클래스의 소멸자가 비가상 소멸자인 경우, 그의.. 2023. 2. 5.
3분 만에 React 개발환경 세팅하기 mac OS에서 React 개발환경 세팅하기 - 애플 디바이스에서 리액트 개발환경 구축하기 node js 설치 node js 홈페이지에 들어가서 다운로드 파일을 받는다. 사용하는 운영체제에 맞게 선택하자. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 다운로드 받은 파일을 실행하면 아래와 같이 설치가 진행된다. 마지막까지 동의 버튼을 누르면 된다. 크롬 브라우저 설치 웹 개발을 위해 크롬 브라우저가 필요하다. 아래 링크를 타고 설치하자. https://www.google.co.kr/chrome/?brand=IBEF&gclid=CjwKCAjwk6-L.. 2023. 1. 28.
Effective C++ 항목6 : 컴파일러가 만들어낸 함수가 필요 없다면 사용을 금지하자 Effective C++ 항목6 컴파일러가 만들어낸 함수가 필요 없다면 사용을 금지하자 클래스의 복사를 금지하고 싶다면? 복사 생성자 / 복사 대입 연산자를 private으로 선언하면? -> 90점 짜리 대응! friend함수가 이를 호출할 수 있기 때문. 100점 짜리 대응은 private멤버로 선언하고 구현하지 않는 것! 이제 누군가 복사 시도하면 링크 에러로 실패할 것 복사 시도할 때 컴파일 에러로 나타나게 하고 싶다면? private선언'만' 된 복사 생성자와 복사 대입 연산잦를 기본 클래스에 넣고 우리가 사용하려는 클래스를 기본 클래스의 파생 클래스로 둠 (클래스 간 역할 분리도 되므로 일석이조) boost라이브러리의 noncopyable클래스를 상속 받도록 하면 위의 내용을 한 번에 해결해주므.. 2023. 1. 27.
반응형