반응형

개발/C, C++ 8

g

[Clang] C++ 빌드 시 undefined reference error 해결 방법

제가 WSL을 여러 번 설치하고 CMake로 빌드하면서 겪었던 상황과 문제에 대해서 공유해 보도록 하겠습니다. WSL, CMake 빌드 시 undefined reference error 해결 방법 1. 필수 standard lib 설치 및 지정 필요 아래와 같은 기본적인 명령어를 알지 못한다면 기본적으로 clang 설치 후 build-essential, libc++-10-dev 와 같은 라이브러리들을 설치하지 않아서 발생한 문제일 경우가 있습니다. undefined reference to `operator new undefined reference to `std::cout' 이 경우 clang version에 따라 아래와 같이 설치를 할 필요가 있습니다. sudo apt install libstdc++-..

개발/C, C++ 2023.12.02

g

[C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점

C++ 표준 라이브러리(STL)에는 다양한 컨테이너가 포함되어 있습니다. 여기서는 unordered_set과 unordered_map에 대해 알아보겠습니다. 이 두 컨테이너는 해시 테이블을 기반으로 하며, 특정 데이터를 빠르게 찾을 수 있는 장점이 있습니다. [C++] STL 컨테이너 unordered set, unordered map 사용법, 차이점 unordered_set 사용법 아래는 unordered_set 사용방법에 대한 예제 코드입니다. #include #include int main() { std::unordered_set mySet; // 요소 추가 mySet.insert(1); mySet.insert(2); mySet.insert(3); // 요소 확인 if (mySet.find(2) !..

개발/C, C++ 2023.11.21

g

[C++] class 생성자에서 explicit 키워드의 의미

오늘은 class 생성자에 대해서 공부하다가 알게 된 explicit 키워드의 의미에 대해서 알아보겠습니다. class 생성자에서 explicit 키워드의 의미 explicit 키워드 C++에서 `explicit` 키워드는 주로 클래스의 생성자에 사용되며, 해당 생성자가 암시적 형 변환을 허용하지 않도록 지정하는 데 사용됩니다. `explicit` 키워드를 사용하면 해당 생성자가 명시적으로 호출되어야 하며, 암시적 형 변환이 자동으로 수행되지 않습니다. 1. 형 변환 오류를 방지: 암시적 형 변환이 허용되면 예상치 못한 형 변환이 발생할 수 있으며, 이는 버그의 원인이 될 수 있습니다. `explicit` 키워드를 사용하면 이러한 형 변환이 방지됩니다. 2. 의도적인 호출 강조: `explicit` 키워..

개발/C, C++ 2023.09.05

g

[C++] STL 컨테이너 Set과 Map 활용법과 차이점

컨테이너 중에서 많이 사용되는 Vector에 대해 알아보았고 그 다음으로 C++에서 많이 사용되는 Set와 Map 컨테이너에 대해서 알아보고 활용법과 차이점에 대해서 정리해 보도록 하겠습니다. C++의 Set과 Map 활용법과 차이점 Set: 중복 없이 유일한 값 관리 Set은 중복된 값을 허용하지 않는 데이터 구조입니다. 이를 통해 유일한 값을 저장하고 관리할 수 있습니다. 값을 정렬된 순서로 저장하며, 내부적으로는 레드-블랙 트리(Red-Black Tree) 또는 비슷한 자료 구조를 사용하여 빠른 검색 및 삽입을 제공합니다. 이러한 특징 때문에 집합 연산에 유용하게 사용할 수 있습니다. #include std::set mySet; mySet.insert(10); mySet.insert(20); myS..

개발/C, C++ 2023.09.02

g

[C++] STL 컨테이너 Vector 의 용도와 특징, 사용 예제

C언어에서 C++언어로 오면서 특징 중에 하나가 컨테이너입니다. STL에서 제공하는 여러 가지의 컨테이너에 대해서 알아볼 텐데 오늘은 가장 중요하고 많이 사용되는 Vector에 대해서 알아보도록 하겠습니다. STL 컨테이너 Vector 의 용도와 특징, 사용 예제 Vector란 Vector는 순차적인 데이터를 저장하고 관리하는 데 사용됩니다. 예를 들어, 배열처럼 연속적인 메모리 공간에 데이터를 저장하며, 데이터를 추가, 삭제, 수정하거나 검색하는 작업을 효율적으로 수행할 수 있습니다. 즉 전통적인 C스타일의 배열과 매칭되는 컨테이너입니다. Vector의 특징 동적 크기 조절 Vector는 크기를 동적으로 조절할 수 있기 때문에 초기에 얼마나 많은 요소가 필요한지 미리 알 필요가 없습니다. 이로써 메모리..

개발/C, C++ 2023.09.01

g

[C++] 생성자에서 virtual 가상 함수 호출하는 경우의 문제

오늘은 생성자에서 가상함수를 호출하는 경우에 무엇이 문제가 되는지 알아보도록 하겠습니다. 생성자에서 virtual 가상 함수 호출하는 경우의 문제 이론적인 내용 C++ 생성자에서 가상 함수를 호출하는 것은 조심해야 하는 상황입니다. 가상 함수 호출은 객체의 실제 타입에 따라 동적으로 호출되는데, 생성자에서 가상 함수를 호출하면 예상치 못한 동작이 발생할 수 있습니다. C++에서 객체의 생성 과정은 다음과 같습니다: - 메모리 할당 - 기본 클래스의 생성자 호출 - 파생 클래스의 생성자 호출 가상 함수 호출은 객체의 실제 타입에 따라 동적으로 결정되는데, 생성자의 경우 파생 클래스의 생성자가 호출되기 전에 기본 클래스의 생성자가 호출되므로 파생 클래스의 가상 함수는 아직 초기화되지 않은 상태일 수 있습니다..

개발/C, C++ 2023.08.11

g

[C++] 복사 생성자(Copy Constructor) 의 이해 및 활용

오늘은 C++에서 복사 생성자의 개념에 대해서 알아보고 이해하는 시간을 가져보도록 하겠습니다. 복사 생성자(Copy Constructor)의 정의, 이해 및 활용 C++에서 복사 생성자는 중요한 개념 중 하나로, 객체를 복사하거나 전달할 때 사용되는 특별한 유형의 생성자입니다. 복사 생성자의 정의 복사 생성자는 객체의 내용을 다른 객체에 복사하는데 사용되는 특별한 생성자입니다. C++에서는 객체를 전달하거나 할당할 때마다 해당 객체의 복사 생성자가 호출됩니다. 기본적으로 C++ 컴파일러는 클래스에 대해 복사 생성자를 자동으로 생성해 주지만, 사용자가 직접 정의하여 커스터마이징 할 수도 있습니다. 기본 복사 생성자 기본 복사 생성자는 단순히 객체의 모든 멤버 변수들을 다른 객체에 복사하는 역할을 합니다. ..

개발/C, C++ 2023.07.27

g

[C++] 참조자 (reference) 의 정의, 사용법 및 주의 사항

C++에서 활용되는 참조자 (reference)에 대해서 알아보도록 하겠다. [C++] 참조자 (reference)의 정의 및 사용법 참조자 (reference)의 정의 C언어에서 변수를 가리키는 것으로 포인터를 사용한다. 예를 들어 아래와 같이 포인터 변수 p를 선언하고 변수 a를 가리키게 하고 가리키는 값인 *p를 출력하면 3이 출력된다. int main(void) { int *p; int a = 3; p = &a; std::cout

개발/C, C++ 2023.03.28
반응형