4장. 함수와 네임스페이스

2025. 2. 26. 16:29·SW개발/C++
목차
  1. 디폴트 파라미터
  2. 함수 다중 정의 (Overloading)
  3. 함수 템플릿
  4. 네임스페이스
  5. 식별자 검색 순서
  6. Name Mangling
반응형

디폴트 파라미터

C++에서는 함수의 매개변수에 기본값을 설정할 수 있음.

이를 디폴트 파라미터라고 하며, 호출자가 특정 인자를 생략할 경우 기본값이 자동으로 적용됨.

단, 디폴트 매개변수는 반드시 오른쪽부터 선언해야 하며, 여러 개의 디폴트 값을 지정할 경우 연속해서 선언해야 함.

int add(int a, int b = 10) {
    return a + b;
}

int main() {
    cout << add(5) << endl; // 15 (5 + 10)
    cout << add(5, 20) << endl; // 25 (5 + 20)
}

함수 다중 정의 (Overloading)

함수 다중 정의는 동일한 함수명을 사용하면서 서로 다른 매개변수 목록을 가지는 여러 함수를 정의하는 기능을 의미함.

다만, 반환값의 타입만 다른 경우는 함수 다중 정의가 불가능함.

int sum(int a, int b) {
    return a + b;
}

double sum(double a, double b) {
    return a + b;
}

함수 템플릿

템플릿은 코드의 중복을 줄이면서 다양한 타입을 지원할 수 있도록 하는 기능을 제공함.

함수 템플릿을 사용하면 특정 타입에 관계없이 동작하는 일반화된 함수를 만들 수 있음.

template <typename T>
T add(T a, T b) {
    return a + b;
}

네임스페이스

C++에서 네임스페이스는 변수나 함수를 그룹화하여 이름 충돌을 방지하는 역할을 수행함.

네임스페이스를 정의할 때는 namespace 키워드를 사용하며, :: 연산자를 이용하여 특정 네임스페이스의 멤버에 접근할 수 있음.

namespace MyNamespace {
    int value = 10;
}

int main() {
    cout << MyNamespace::value << endl; // 10
}

식별자 검색 순서

C++에서는 특정 식별자가 검색될 때 다음과 같은 순서로 탐색이 진행됨.

  1. 현재 블록 범위
  2. 상위 블록 (최대 함수 바디)
  3. 최근에 선언된 전역 변수나 함수
  4. using 선언된 네임스페이스 혹은 전역 네임스페이스

Name Mangling

C++에서는 함수 다중 정의(overloading)를 지원하기 위해 함수명을 내부적으로 변환하는 기법을 사용함. 이를 Name Mangling이라고 하며, 각 함수의 매개변수 타입을 기반으로 고유한 식별자를 생성함.

반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

6장. 복사 생성자와 임시 객체  (0) 2025.02.26
5장. 클래스  (0) 2025.02.26
3장. C++의 주요 기본 개념  (0) 2025.02.11
2장. C와 C++의 차이  (0) 2025.02.11
1장. C만 배워본 내가 C++을 시작  (0) 2025.02.11
  1. 디폴트 파라미터
  2. 함수 다중 정의 (Overloading)
  3. 함수 템플릿
  4. 네임스페이스
  5. 식별자 검색 순서
  6. Name Mangling
'SW개발/C++' 카테고리의 다른 글
  • 6장. 복사 생성자와 임시 객체
  • 5장. 클래스
  • 3장. C++의 주요 기본 개념
  • 2장. C와 C++의 차이
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • AI (17)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (8)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파일입출력 #DataFrame불러오기
    홉바이홉
    전공 지식
    면접을 위한 CS 전공지식 노트
    CS지식
    ios7계층
    os구조
    입출력관리
    면접을 위한 cs전공지식 노트
    c io
    반도체 소자 공학
    반도체 물성
    멀티프로세스
    c언어 입출력
    반도체 공학
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    word 수식
    보고서 수식
    ESG
    페이징 기법
    요약본
    운영체제
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    공백포함입력받기
    정리본
    홉바이홉통신
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    MySQL
    LAN
    메시지큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
4장. 함수와 네임스페이스
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.