CPP 5

[Effective C++] Chapter 2. 생성자, 소멸자 및 대입 연산자(2)

항목 7: 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 기본 클래스에 virtual 소멸자가 없다면, 파생 클래스의 소멸자 실행이 건너뛰어져 발생하는 메모리릭을 방지하도록 해야함 가상 함수를 하나라도 가진 클래스 (=기본 클래스로 사용하겠다) --> 클래스의 소멸자도 가상 소멸자여야 함 자연스럽게 소멸자가 가상 소멸자로 되어 있으면 기본 클래스구나 하고 인식할 수 있음 추상 클래스(=기본 클래스로 쓰일 목적)로 만들고 싶은 클래스 --> 순수 가상 소멸자를 선언하자(=순수 가상함수 있으면 추상 클래스) class Base { public: Base(); virtual ~Base(); } clase Object : public Base { public: Object(); ~Obj..

Programming/C++ 2022.06.12

[Effective C++] Chapter 2. 생성자, 소멸자 및 대입 연산자(1)

항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 빈 클래스라도 컴파일러가 자동으로 생성해주는 멤버함수 복사생성자 외 생성자 선언 안했을 경우 기본 생성자 따로 정의하지 않은 경우 복사 생성자 복사 대입 연산자 복사는 데이터 사본을 그대로 복사함 (얕은 복사) 소멸자 ==> 컴파일러가 자동 생성하는 함수가 있음을 인지하고 직접 선언하여 명확히 처리하자 class CClass { private: char* name; public: //기본 생성자 CClass() {} //복사 생성자 (동적할당 얕은 복사 주의) CClass(const CClass &class) {} //복사 대입 연산자 (동적할당 얕은 복사 주의) CClass& operator=(const Class &class) ..

Programming/C++ 2022.06.12

[Effective C++] Chapter 1. C++에 왔으면 C++의 법을 따릅시다.

항목 1: C++를 언어들의 연합체로 바라보는 안목은 필수 C++은 Multiparadigm Programming Language다. C Object Oriented C++ Template C++ STL C++? 절차지향 C → 객체지향 기능(클래스, 캡슐화, 추상화, 상속, 다형성)을 추가 → 템플릿(일반화), STL 추가 ==> 하나로 정해진 언어가 아니라서 선택한 언어 규칙에 맞춰야함 (C++: call by reference / STL은 C 포인터를 본따 만들었기 때문에 call by value 사용하기) (템플릿 관련 참고: https://www.youtube.com/watch?v=a6BQphLoTag) 항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자 선행처리자..

Programming/C++ 2022.02.15

[프로그래머스] 직사각형 좌표 구하기, 나머지 한 점(cpp/python)

https://programmers.co.kr/learn/courses/18/lessons/1878?language=cpp 알고리즘 문제 해설 - 나머지 한 점 프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어 programmers.co.kr 문제 3점이 주어지면 직사각형을 만들 수 있는 한 점을 구하는 문제다 풀이 x좌표, y좌표 각각 한 번씩만 나온 점을 가져와주면 된다. 나왔는지 안나왔는지를 반복문과 조건문을 써서 찾아도 되지만 XOR을 이용하면 더 간단하게 풀 수 있다. XOR는 보통 같은 값이면 0, 다르면 1이라고 하는데 1이 홀수..