코딩 모닥불
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
      • C++
      • 알고리즘
      • 표준 라이브러리
      • 백준(BOJ)
  • 홈
  • 태그
  • 방명록
C++

[C++] 함수 객체( function object, functor ) : operator()를 구현한 타입

함수 객체( function object )함수 객체( function object )는 operator() 함수를 구현한 타입( type )을 말합니다. C++ 표준 라이브러리에서는, 펑터( functor )라고도 불리는, 이 타입을 주로 컨테이너나 알고리즘의 정렬 기준이 필요할 때 사용합니다. 다음 예제에서는 이러한 함수 객체를 사용하는 법을 볼 수 있습니다.class FuncObj{ public: int operator()(int a, int b){ // 이 연산자를 구현한 타입이 함수 객체 return a + b; }};int Func(int a, int b){ // 일반 함수 return a + b;}int main(){ FuncObj func; // 함수 ..

2025. 3. 13.
C++

[C++] 객체의 모든 원소를 순환하는 범위 기반 for 구문

범위 기반 for ( range-based for )범위 기반 for 루프는, C++11부터 도입된, 배열이나 컨테이너 같이 데이터의 연속을 나타내는 객체의 모든 멤버를 순환하는 구문입니다. 선언 방식은 다음과 같습니다.for ( 데이터_타입 변수명 : 배열 or 컨테이너 등 순환가능한 객체 ){}범위 기반 for 구문의 대상은 배열이나 컨테이너뿐 아니라, 데이터가 연속되어 있는 순환가능한 객체라면 대상이 될 수 있습니다. 예를 들어, std::string 문자열 안에 있는 모든 문자를 출력하는데도 이 구문을 사용할 수 있습니다. 그리고, 위에서 말하는 "데이터_타입"은 이러한 순환가능한 객체가 가진 멤버의 데이터 타입을 말합니다. 이 구문의 장점은 기존의 for 구문보다 알아보기 쉽고 짧은 코드를 만들..

2025. 3. 11.
C++

[C++] 단점을 보완한 범위 있는( scoped ) enum

범위 없는( unscoped ) enumC++에서 보통의 식별자들의 경우, 중괄호 블록을 벗어나게 되면, 효력을 잃게 마련입니다.int main(){ { int val = 0; } val += 10; // error ! 변수의 범위를 벗어났음} 그렇지만, 아래의 enum 타입의 식별자 같은 경우, 이러한 제약에 영향을 받지 않습니다.int main(){ enum Color{ white, black, red }; auto white = false; // error ! enum Color2{ black, yellow, blue }; // error !! black 식별자 중복}▼출력error: 'auto white' redeclared as differen..

2025. 3. 9.
C++

[C++] 클래스의 멤버 함수를 가리키는 멤버 함수 포인터

함수 포인터( function pointer )는 함수를 지시하는 포인터( pointer )입니다. [C++] 함수를 전달하기 위한 함수 포인터( function pointer )함수 포인터( function pointer )포인터( pointer )란 객체의 메모리 주소를 저장하는 변수입니다.이러한 포인터 중에, 함수의 메모리 주소를 저장하는 포인터를 함수 포인터라고 합니다.int var{ 5 };int* ptcodingbonfire.tistory.com그리고, 이러한 함수 포인터 중에서 클래스의 멤버 함수를 가리키는 포인터를 멤버 함수 포인터( member function pointer )라고 합니다. 윗글에서, 함수 포인터는 함수 타입과 * 기호를 사용해서 함수 포인터를 정의한다고 했습니다. int..

2025. 3. 6.
C++

[C++] 표현식의 구체적인 타입을 알려주는 decltype

decltype 키워드decltype는 이름이나 표현식의 구체적인 타입( declared type )을 알려주는 키워드입니다.이 키워드는 다음과 같은 규칙에 따라, 표현식의 타입을 반환합니다. ● 표현식이 식별자 또는 클래스 멤버를 가리키는 경우, decltype은 이 식별자 또는 클래스 멤버의 타입을 반환합니다.struct Point{ int x = 0; int y = 0;};int main(){ int x = 10; decltype( x ) var = x; // decltype( x )는 int const Point pt{ 3, 4 }; decltype( pt.x ) var2 = 3; // decltype( pt.x )는 int ..

2025. 3. 5.
C++

[C++] 함수를 전달하기 위한 함수 포인터( function pointer )

함수 포인터( function pointer )포인터( pointer )란 객체의 메모리 주소를 저장하는 변수입니다.이러한 포인터 중에, 함수의 메모리 주소를 저장하는 포인터를 함수 포인터라고 합니다.int var{ 5 };int* ptr{ &var }; // int 타입 변수에 대한 포인터위와 같이, 포인터를 선언하려면 포인터가 가리키는 객체의 타입과 * 기호를 사용합니다.그리고, 함수 포인터를 선언하려면, 함수 포인터가 가리키는 함수의 타입과 *기호가 필요합니다..그런데, 여기서 함수의 타입( function type )은 무엇일까요? 함수를 정의하는데 반드시 필요한 것은, 함수의 이름과, 매개변수 타입 리스트, 그리고 반환 타입입니다.( 매개변수의 이름은 경우에 따라 없을 수도 있습니다. )이 중에..

2025. 2. 28.
C++

[C++] 함수의 타입 추론과 후행 반환 타입을 위한 auto 키워드

함수의 타입 추론( type deduction )C++에서는 auto 키워드를 사용해 변수의 타입을 추론할 수 있습니다.int add( int x, int y ){ return x + y;}int main(){ auto var{ 3.14 + 2.5 }; // double 타입 auto var2{ add( 3, 5 ) }; // int 타입}위에서 컴파일러는 auto 키워드를 만나면, var를 초기화하는 표현식( 3.14 + 2.5 )으로부터 var의 타입을 double로 결정하는데, 이러한 것을 변수의 타입 추론이라고 합니다. [C++] 자동으로 변수의 타입을 완성하는 auto 키워드변수의 타입 추론( type deduction )C++ 에는 모든 값에 해당하는 타입이 있습니다.int..

2025. 2. 26.
C++

[C++] 자동으로 변수의 타입을 완성하는 auto 키워드

변수의 타입 추론( type deduction )C++ 에는 모든 값에 해당하는 타입이 있습니다.int main(){ 5; // int 3.14; // double 5L; // long 5.0f; // float ?? variable{ 5 }; // variable의 타입 ??}예를 들어, 위의 3.14는 double 타입을 갖고, 5.0f는 float 타입을 갖고 있습니다.그렇기 때문에, 프로그래머가 명시하지 않더라도, 컴파일러는 이를 이용해서 변수의 타입 예상할 수 있습니다. 이렇게, 컴파일러가 변수의 값으로부터 변수의 타입을 예상하는 것을 타입 추론( type deduction )이라고 하며, 이 추론의 결과를 이용하기 위해 auto 키워드를 사..

2025. 2. 24.
C++

[C++] 클래스 생성자의 멤버 초기화 리스트( member initializer list )

멤버 초기화 리스트( member initializer list )멤버 초기화 리스트는 클래스 생성자( constructor )의 매개변수 리스트 뒤에서 콜론 :으로 시작하는 데이터 멤버들의 초기화 목록입니다.그리고, 이 리스트의 각 멤버는 컴마 ,로 분리됩니다.다음 예문은 이러한 멤버 초기화 리스트를 보여주고 있습니다.class Date{ int m_year; int m_month; int m_day;public: Date( int year, int month, int day ) : m_year( year ), m_month{ month }, m_day{ day } // 멤버 초기화 리스트 { // do something } vo..

2025. 2. 20.
C++

[C++] const 포인터( pointer )의 종류

포인터의 상수성( constness )포인터( pointer )는 객체의 주소를 값으로 하는 변수입니다.그리고, 이 포인터는 역참조( dereference ) 연산자 *를 사용하여, 저장하고 있는 주소에 있는 객체의 값을 변경할 수 있습니다. 그렇기 때문에, 포인터와 관련되는 상수 속성은 두 개가 됩니다.하나는 포인터가 가리키는 객체의 값을 변경할 수 있는지에 대한 속성이고, 다른 하나는 변수로서의 포인터의 값을 변경할 수 있는지에 대한 속성입니다. const 객체에 대한 포인터( pointer to const )포인터가 가리키는 객체의 값을 변경할 수 없는 경우는 두 가지입니다.그리고, 이 두 가지 경우 모두, 포인터 대상의 타입 앞에 const를 붙입니다. ● 첫 번째는 포인터가 가리키는 대상이 co..

2025. 2. 18.
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »

전체 카테고리

  • 분류 전체보기
    • C++
    • 알고리즘
    • 표준 라이브러리
    • 백준(BOJ)

블로그 인기글

태그

  • #std::stack
  • #std::queue
  • #소멸자
  • #std::unique_ptr
  • #inline
  • #함수 객체
  • #전처리기
  • #std::string_view
  • #복사 생성자
  • #std::sort
  • #이진 탐색
  • #Lamda
  • #decltype
  • #using
  • #namespace
  • #전방 선언
  • #깊이 우선 탐색
  • #constexpr
  • #static_cast
  • #예외 처리
  • #초기화
  • #동적 계획법
  • #헤더 가드
  • #const
  • #포인터
  • #상수 표현식
  • #auto
  • #std::vector
  • #범위 기반 for
  • #Enum
MORE
애드센스 광고 영역
Powered by Privatenote Copyright © 코딩 모닥불 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바