LAB
-
👉 포스팅 내용 스마트 포인터에 대해서 알아보도록 합시다. 👉 스마트 포인터 사용이유 스마트 포인터를 사용하지 않고 포인터를 관리하면 다음과 같은 문제가 발생할 수 있습니다. ✅ 코드 #include class MyClass { public : int a; }; int main() { MyClass* mClass = new MyClass(); return 0; } 크게 문제가 될 건 없어보이지만 이 코드에는 큰 문제점이 있습니다. 바로 mClass 객체가 메모리에서 해제되지 않는다는 점 입니다. 이러한 문제를 해결하기위해 RAII 디자인 패턴이 사용되기도 합니다. 👉 RAII 디자인 패턴 ✅ 코드 #include template class RAII { public: RAII() { _inst = new ..
C++ 쉽고 간단하게 포인터를 관리하자 (smart_pointer)👉 포스팅 내용 스마트 포인터에 대해서 알아보도록 합시다. 👉 스마트 포인터 사용이유 스마트 포인터를 사용하지 않고 포인터를 관리하면 다음과 같은 문제가 발생할 수 있습니다. ✅ 코드 #include class MyClass { public : int a; }; int main() { MyClass* mClass = new MyClass(); return 0; } 크게 문제가 될 건 없어보이지만 이 코드에는 큰 문제점이 있습니다. 바로 mClass 객체가 메모리에서 해제되지 않는다는 점 입니다. 이러한 문제를 해결하기위해 RAII 디자인 패턴이 사용되기도 합니다. 👉 RAII 디자인 패턴 ✅ 코드 #include template class RAII { public: RAII() { _inst = new ..
2024.02.18 -
👉 포스팅 내용 오늘은 malloc과 new의 차이에 대해서 알아보도록 하겠습니다. 👉 차이점 일단 둘 다 힙 영역에 메모리를 할당하는 함수를 동일한데 1가지 다른 점이 있습니다 malloc : 힙 영역에 size만큼 공간을 할당합니다. new : 힙 영역에에 size만큼 공간을 할당하고 객채의 생성자를 호출합니다. 다음 코드를보면 보다 확실하게 알 수 있습니다. ✅ 코드 #include using namespace std; class A { public: A() { cout
C++ malloc과 new의 차이👉 포스팅 내용 오늘은 malloc과 new의 차이에 대해서 알아보도록 하겠습니다. 👉 차이점 일단 둘 다 힙 영역에 메모리를 할당하는 함수를 동일한데 1가지 다른 점이 있습니다 malloc : 힙 영역에 size만큼 공간을 할당합니다. new : 힙 영역에에 size만큼 공간을 할당하고 객채의 생성자를 호출합니다. 다음 코드를보면 보다 확실하게 알 수 있습니다. ✅ 코드 #include using namespace std; class A { public: A() { cout
2024.02.17 -
👉 포스팅 내용 string_view에 대해서 알아봅시다. 👉 사용 이유 string_view의 장점은 무엇보다도 문자열에 대한 포인터와 길이만 가잡니다. 그렇기에 임시 객체를 생성하지 않고 문자열을 획득할 수 있습니다. ✅ 코드 해당 코드를 보면 단순히 char 배열을 만들어 string 객체에 대입하는 것으로 보입니다. 하지만 내부적으로 봤을 경우 string 객체는 char의 문자열을 복제하여 생성합니다. #include int main() { char cPtr[6] = "hello"; std::string str = cPtr; std::cout
C++ string_view👉 포스팅 내용 string_view에 대해서 알아봅시다. 👉 사용 이유 string_view의 장점은 무엇보다도 문자열에 대한 포인터와 길이만 가잡니다. 그렇기에 임시 객체를 생성하지 않고 문자열을 획득할 수 있습니다. ✅ 코드 해당 코드를 보면 단순히 char 배열을 만들어 string 객체에 대입하는 것으로 보입니다. 하지만 내부적으로 봤을 경우 string 객체는 char의 문자열을 복제하여 생성합니다. #include int main() { char cPtr[6] = "hello"; std::string str = cPtr; std::cout
2024.02.16 -
👉 포스팅 내용 구조적 바인딩(Structured Bindings)에 대해 알아봅시다. 👉 생기기 전 먼저 구조적 바인딩의 경우 C++ 17에서 부터 지원을 시작하였습니다. 구조적 바인딩을 사용하기 전에는 다음과 같은 불편 사항이 존재했습니다. ✅ 코드 #include #include int main() { std::pair values{ "KKK" , 10 }; std::string key = values.first; int value = values.second; std::cout
C++ 구조적 바인딩(Structured Bindings)👉 포스팅 내용 구조적 바인딩(Structured Bindings)에 대해 알아봅시다. 👉 생기기 전 먼저 구조적 바인딩의 경우 C++ 17에서 부터 지원을 시작하였습니다. 구조적 바인딩을 사용하기 전에는 다음과 같은 불편 사항이 존재했습니다. ✅ 코드 #include #include int main() { std::pair values{ "KKK" , 10 }; std::string key = values.first; int value = values.second; std::cout
2024.02.15 -
👉 포스팅 내용 Initializer_list에 대해서 알아보자 👉 사용해야하는 이유 만약 우리가 N개의 문자를 받고, 이를 전부 더하는 코드를 작성해본다고 생각하자 ✅ 코드 #include #include class Sum { public: Sum(std::vector vals) { int sum = 0; for (int val : vals) sum += val; std::cout
C++ Initializer_list👉 포스팅 내용 Initializer_list에 대해서 알아보자 👉 사용해야하는 이유 만약 우리가 N개의 문자를 받고, 이를 전부 더하는 코드를 작성해본다고 생각하자 ✅ 코드 #include #include class Sum { public: Sum(std::vector vals) { int sum = 0; for (int val : vals) sum += val; std::cout
2024.02.14