본문 바로가기
반응형

코드6

Effective C++ 항목11 : operator에서는 자기대입에 대한 처리가 빠지지 않도록 하자 Effective C++ 항목11 operator에서는 자기대입에 대한 처리가 빠지지 않도록 하자 선 요약 operator=함수를 구현할 때, 자기대입을 제대로 처리하도록 하자. 객체간의 주소 비교 호출 순서를 적절히 조절 "복사 후 맞바꾸기" 기법 두 개 이상의 객체에 대해 동작하는 함수가 있다면, 이 함수에 넘겨지는 객체들이 사실 같은 객체인지 정확하게 체크하자. class Widget{ ... } Widget w; ... w = w // 자기에 대한 대입 위와 같이 C++에서는 자기 자신을 대입하는 자기대입이 적법(legal)하다. 자기대입은 여러 곳에서 하나의 객체를 참조하는 상태, 즉 중복참조라고도 불린다. 중복참조란? class Base { ... } class Derived { ... } v.. 2023. 2. 18.
Qt6에서 QML을 잘 사용하는 방법 9가지 Qt6에서 QML 을 잘 사용하는 방법 9가지 2022 Qt6 컨퍼런스 내용 일부 정리 (추천) Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 강의 - 입문편 https://inf.run/3XmSH Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발 - 입문편 강의 - 인프런 Qt QML과 C++를 사용하여 크로스플랫폼 애플리케이션 개발에 입문할 수 있습니다. 해당 강의에서는 윈도우 응용 프로그램 타겟으로 개발을 진행합니다., 강의 주제 📖 이 강의를 통해 참가자들은 www.inflearn.com var 프로퍼티 사용을 피하라 아래 예시에서 프로퍼티 a는 untypedSelf의 멤버의 값을 가진다. untypedSelf가 var로 선언되어 있어 정확히 어떤 타입인지 모르기 때문에 경고 메시지가 .. 2023. 2. 9.
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.
반응형