본문 바로가기

분류 전체보기167

c++ 구조적 바인딩 C++17에서 도입된 구조적 바인딩(structured binding)은 여러 값을 간단하고 직관적인 문법으로 한 번에 변수로 분해할 수 있게 해주는 기능입니다. 이는 튜플, 구조체, 배열 등의 복합 데이터 타입을 더 쉽게 다룰 수 있도록 도와줍니다.구조적 바인딩의 기본 개념구조적 바인딩을 사용하면 auto를 이용해 여러 개의 변수를 동시에 선언하고 초기화할 수 있습니다. 일반적으로는 복합 데이터 구조에서 개별 요소에 접근할 때 일일이 인덱스나 멤버 이름을 지정해야 했지만, 구조적 바인딩을 통해 각 요소를 한꺼번에 각각의 이름으로 할당할 수 있습니다.구조적 바인딩의 문법구조적 바인딩을 사용하려면 다음과 같은 문법을 사용합니다:auto [var1, var2, ..., varN] = expression;여기.. 2024. 10. 7.
++i vs i++ 누가 일반적인가. ++i와 i++는 둘 다 값을 1씩 증가시키는 역할을 하지만, C++에서 특히 루프에서 ++i가 i++보다 자주 사용되는 이유는 성능과 효율성 때문입니다.1. ++i vs i++의 차이++i: 전위 증가 연산자로, 값을 증가시킨 후 증가된 값을 반환합니다.i++: 후위 증가 연산자로, 현재 값을 반환한 후에 값을 증가시킵니다.두 연산자가 동일한 작업을 수행하지만, i++는 임시 값을 저장하고 반환해야 하므로 추가 작업이 필요합니다.2. 성능 차이C++에서 i가 일반 정수형 변수인 경우, 컴파일러가 최적화를 통해 ++i와 i++ 간의 성능 차이를 줄일 수 있습니다. 하지만 클래스나 사용자 정의 타입의 경우는 이야기가 다릅니다. 후위 증가 연산자(i++)는 증가하기 전의 값을 저장해야 하므로, 추가적인 메모.. 2024. 10. 7.
Optional Type C++의 std::optional 타입은 C++17에서 도입된 기능으로, 값이 있을 수도 있고 없을 수도 있는 상황을 표현하는 데 사용됩니다. 이는 변수에 값이 없는 경우를 안전하게 처리할 수 있도록 해줍니다. std::optional은 주로 함수에서 **"값이 없을 수도 있다"**는 의미를 전달할 때 유용하며, 포인터를 사용하는 대안이 될 수 있습니다.std::optional의 기본 개념std::optional은 값을 포함할 수도 있고 포함하지 않을 수도 있는 컨테이너입니다. 값이 포함된 경우에는 유효한 값을 갖고, 그렇지 않은 경우에는 비어있는(empty) 상태가 됩니다.std::optional 선언 및 사용 방법std::optional을 사용하려면 헤더를 포함해야 합니다.1. 기본 사용법cpp코드.. 2024. 10. 7.
가상 베이스 클래스 (다이아몬드 상속 해결) 다중 상속문제중 동일한 클래스를 상속하는 부모 클래스를 여러 개 상속하면 모호함이 발생한다.이럴 때는 부모 클래스에 자체 기능을 정의하지 않으면 어느 버전의 메서드를 호출할지 모르는 모호한 문제를 해결할 수 있다.그런데 c++는 이렇게 중복되는 부모 클래스도 자체 기능을 가질 수 있도록 가상 베이스 클래스라는 기능을 제공한다.중복되는 부모가 가상 베이스 클래스라면 모호한 상황이 발생할일이 없다.다음 코드는 Animal 베이스 클래스에 sleep() 메서드를 추가하고, Dog와 Bird 클래스에서 Animal을 가상 베이스 클래스로 상혹하도록 수정했다.이 과정에서 만약 Animal 클래스 앞에 virtual 키워드를 지정하지 않으면 DogBird객체로 sleep()을 호출할 때 모호함이 발생해서 컴파일 에.. 2024. 10. 7.