- 110

[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

.a와 .so 라이브러리 (Dependency)

빌드? 소스코드 컴파일, 링킹, 실행까지 일련의 과정을 빌드라고 한다. 라이브러리에 의존(dependency)하는 프로그램은 라이브러리가 없으면 동작하지 않음. Library : 다른 프로그램들과 링크되기 위하여 존재하는 하나 이상의 서브루틴이나 함수들의 집합 파일 실행 파일에 linking되는 시점에 따라 두가지로 나눠진다. 정적 라이브러리 (Static Library) 동적 라이브러리 (Dynamic/Shared Library) 정적 라이브러리 빌드 시에 라이브러리의 목적 코드를 실행 파일에 복사하여 넣는 라이브러리 시스템 환경이 변해도 어플리케이션엔 아무런 영향이 없고 완성된 어플리케이션을 안정적으로 사용할 수 있다. 하지만 모든 오브젝트 코드를 실행 파일에 내장하기 때문에 메모리에 로드되는 애플리..

Programming/C++ 2022.02.26

선분 교차 여부 확인, intersection 교점 찾기 (작성 중)

Screen 화면에서 선분을 그리는데 Screen 밖 화면에는 line을 그리지 않기 위해 화면과 선분의 교점을 찾아 해당 위치부터 line을 그리게 된다 그래서 화면 스케일의 point들과 내가 화면 안에 그리려는 line의 교점이 있는지 계산해야한다 이 내용이 메인 https://bowbowbow.tistory.com/17 [기하] 외적을 이용해서 선분과 선분의 교차점 구하기 [기하]외적을 이용해서 선분과 선분의 교차점 구하기 목차 [기하]외적을 이용해서 선분과 선분의 교차점 구하기 직선과 직선의 교차점 선분과 선분의 교차점 선분과 선분의 교차여부 판별 Referen bowbowbow.tistory.com 교점 계산은 벡터 외적을 이용한다 외적의 방향이 반대라면 선분이 교차하고 있다고 볼 수 있다고 ..

벡터 내적과 외적의 물리적 의미

벡터 곱에는 두 가지가 있다 Dot (내적) ⋅ Cross (외적) × 둘 다 곱 연산인데 어떤 차이가 있을까? 내적 벡터의 내적은 효율이라고 볼 수 있다 예를 들어 쇼파의 위치를 옮긴다고 했을 때, L의 방향으로 F만큼의 힘을 줘서 움직여야 쇼파를 옮겼다고 할 수 있다. L의 방향으로 힘이 작용되어야 일에 관여, 일을 했다고 볼 수 있다. 수평적으로 동일하게 작용됐을 때, F가 100% 일로 소모됐다고 할 수 있다. 그냥 쇼파를 들었다 내려두면 그건 쇼파를 옮겼다고 할 수 없다. 그래서 수직적으로 작용했을 땐 일을 안했다고 할 수 있다. 내적은 목표하는 방향과 일치하는 성분이 얼마인지를 보는 것 cos연산이기 때문에 일치할수록 커진다 (많으면 많을수록 커짐) (W = FS 인데 유효하지 않을 경우가 있..

[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