| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 메테리얼
- Unreal
- 코드리뷰
- 순환 리스트
- A* Algorithm
- STL
- topdownmove
- CS
- 툰쉐이딩
- Gas
- Toon Shading
- 헤더 경로
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- c++ 베이직
- 백준
- C++
- Console
- CS50
- Module
- 언리얼
- 브론즈
- build.cs
- Harvard
- UE_5
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- 원카페#무인카페#카페추천#카페맛집
- 네트워크 기초
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- leetcode
- 폭설 #미친 날씨
- Today
- Total
목록전체 글 (113)
WN_인생기록
inline함수는 inline으로 지정된 함수를 컴파일러가 main 함수에서 실행하도록 하는 기능입니다. 함수는 호출할때 새로운 스택프레임을 생성하여 호출하게 됩니다. 그러나 inline을 붙인다면 함수 전체를 main함수의 본문으로써 인식하게 됩니다. 이로써 오버헤드를 줄이는 효과도 있지만, 남발하게 된다면 본문의 크기가 커지니 메모리 사용량이 증가할수도 있습니다.하지만 간단한 코드가 아니라면 코드 본문의 크기가 커지게 됨으로, inline이 제대로 작동하지 않을 가능성도 있습니다.
가상 소멸자는 파생클래스가 상속을 받았을때, 필요한 메서드 입니다. 파생클래스가 생성될때는, 상위 클래스의 생성자가 생성되고, 이후에 파생클래스의 생성자가 실행됩니다. 그러나 소멸할때도 상위 클래스의 소멸자가 먼제 실행되기때문에, 파생클래스의 소멸자가 호출되지 않아 메모리 누수가 발생합니다. 이를 막기 위해서는, 상위 클래스의 소멸자에 virtual를 붙여 생성하면, 상속받은 소멸자가 먼저 호출되어, 메모리 누수가 없이 소멸됩니다.
클래스에는 3가지 생성자가 있습니다. 기본 생성자, 매개변수 생성자, 복사 생성자가 있습니다. class의 기본 기능들이기 때문에, 명시적으로 구현하지 않으면 자동으로 생성됩니다. #include using namespace std; // 기본 생성자 class Class_name { public: Class_name() { cout
다형성은 보통 오버로드와 오버로딩으로 나뉘는데, 컴파일 시간에 정의되는 다형성과 런타임에 정의되는 다형성으로 구분할 수 있습니다. 컴파일 시간에 정의되는 다형성은 함수 오버로딩, 연산자 오버로딩이 있으며 함수 오버로딩과 연산자 오버로딩은 각각의 인수 또는 연산자의 수와 유형에 따라 컴파일 시간에 정의됩니다. 런타임에 정의되는 다형성은 함수 오버라이딩과 가상 함수가 있습니다. 함수 오버라이딩과 가상함수는 객체유형을 기반으로 함수 구현을 동적으로 선택하기 때문에 런타임에 정의됩니다. 기본 클래스와 파생 클래스의 관계가 있는 기능들은 런타임에 정의된다고 정리할 수 있습니다.
가상함수는 파생 클래스에서 가상 함수를 재정의해 자체적으로 함수 구현을 할 수 있도록 하는 기능입니다. 재정의하지 않아도 기본적인 기능은 보장되어 실체가 생길 수 있습니다. 순수가상함수는 virtual로 선언된 함수에 = 0; 값을 할당하는 가상함수입니다. 하나 이상의 순수 가상함수를 포함하는 클래스는 추상 클래스 라고 하며, 추상클래스의 객체는 인스턴스화 할 수 없습니다.(실체가 없습니다.) 기본 구현은 존재하지 않고, 파생 클래스에서만 재정의되어 구현되는데, 이는 인터페이스를 정의하여 파생클레스에 전달하기 위함입니다. 추상 클래스의 모든 순수가상함수를 재정의해야 실체가 생깁니다. 인터페이스* 파생클레스가 없으면 안될 중요한 요소. (구현하지 않으면 실체가 안생김)
new 와 malloc은 둘다 동적 메모리 할당에 사용되는 기능입니다. new는 C++ 에만 해당되며, 생성자를 호출하고 메모리 초기화를 포함하여 동적 메모리 할당이 이루어 집니다. 또한 할당되어지는 데이터 타입을 반환합니다. 반면 malloc은 원시 메모리 블록을 할당하는 함수이고, 메모리를 초기화 하거나 생성자를 호출하지 않습니다. 데이터 유형을 알지 못하기에 명시적으로 void를 반환합니다.
매번 while문 쓸때마다, While 조건에 대해서 고민하게 된다. 이게 true인가 false 인가 ... 맨날 헷갈렸는데 이참에 정리하도록 해보자 일단 무조건 while은 조건이 true일때 while 본문이 실행되며, 조건이 false 가 될때까지 while문이 반복되는 형태이다. 잊지 말자 #include using namespace std; int main() { int x = 0; // 본문이 시작되기 전에 조건이 먼저 평가됨 // 본문이 시작되기 전에 조건을 확인 하는지 while (x < 5) { cout
배열은 연속된 메모리 위치에 고정적인 크기로 저장되는 자료구조 입니다. 때문에 프로그래머가 배열을 선언할때 크기를 미리 정해줘야 합니다. 때문에 인덱스 요소로 탐색에는 시간복잡도에서 O(1)을 갖습니다. 반면 리스트는 데이터와 포인터로 이루어진, 자료구조 입니다. 포인터는 다음 노드를 가리키고 있기 때문에, 배열과는 다르게 연속적인 메모리를 차지하지는 않고 동적으로 크기를 조절할 수 있습니다. 탐색에 있어서는 처음부터 순회해야 하기 때문에, 시간 복잡도 O(n)을 갖습니다.