[C++] 템플릿, 포인터와 주소, 범위 지정 연산자 ::

2023. 1. 4. 22:51·C++
목차
  1. 1. 템플릿: 포괄적 함수(generic function)
  2. 1.1 템플릿 구현 형식
  3. 1.2 템플릿의 구현
  4. 2. 실매개변수, 형식매개변수
  5. 3. 매개변수를 전달하는 방법
  6. 4. 포인터와 주소
  7. 5. 포인터 선언
  8. 6. 참조 연산자 *
  9. 7. 범위 지정 연산자 '::' 
728x90
반응형

1. 템플릿: 포괄적 함수(generic function)

-템플릿은 인자(매개변수)를 통한 다형성을 제공한다.

-함수 중첩은 기능이 같은 함수들을 같은 이름으로 사용할 수 있도록 한다. 함수의 매개변수의 형과 수로 구분이 되고, 코드 자체도 다르게 구성될 수 있다. 그러나, 코드는 전혀 바뀌지 않고 다른 함수를 필요로 한다면 템플릿을 사용한다.

-템플릿은 값 뿐만 아니라 형을 인자로 받는 함수로서 인자로 받은 형에 대하여 함수를 생성시키는 포괄적 함수(generic function)이다.

 

1.1 템플릿 구현 형식

template <class 자료형 이름> 리턴형 함수 이름 (매개변수 리스트)
{
      //함수 코드
}
template <class T> void SS(T x, T y)   // T는 결정하지 않은 자료형
{
      //함수 코드
}

 

1.2 템플릿의 구현

#include <iostream>
using std::cout;
using std::endl;


template <class T1, class T2> void fun(T1 x, T2 y)
{
    cout << x << " " << y <<endl;
}
int main()
{
    fun("P_Piano", 22); // T1은 문자열, T2는 정수형
    fun(25, 21.9); //T1은 정수형(int), T2는 double형
    return 0;
}

 


2. 실매개변수, 형식매개변수

-함수들 간에 서로 데이터를 교환할 때 사용하는 것을 함수의 매개변수라고 한다.

-실매개변수(actual parameter, argument)

   -함수를 호출할 때 사용하는 매개변수

-형식매개변수(formal parameter, parameter)

   -함수 정의에서 사용하는 매개변수


3. 매개변수를 전달하는 방법

-C언어에서는 기본적으로 값에 의한 호출(call by value)

-실매개변수의 값을 형시매개변수로 전달 (이 방법은 실매개변수를 형식매개변수로 전달할 뿐 함수 내부에서 형식매개변수가 변경되더라도 실매개변수는 변경되지 않는다.)

-형식매개변수가 변하면 실매개변수도 변하게 하려면 포인터를 이용하여 call by reference로 구현해야 한다.

<매개변수를 전달하는 방법>


4. 포인터와 주소

  • 메모리에는 위치를 구분하기 위해 순서대로 번호가 붙어있는데 이것을 메모리의 주소, 번지, address라고 한다.
  • int sum = 0;
  • 변수를 초기화 하면서 선언하면, int형이므로 4바이트 메모리 공간이 확보되고 초기값으로 0이 할당된다.
  • sum 변수가 실제로 할당된 메모리의 주소를 알고 싶다면 &연산자를 사용하여 &sum이라고 하면 변수가 기억되어 있는 메모리 번지를 알 수 있다.
  • 메모리의 주소를 저장하려면 일반 변수가 아닌 포인터를 사용한다.
  • 포인터라고만 해도 되지만 주소를 저장하는 변수이므로 포인터 변수라고도 한다.

5. 포인터 선언

  • 포인터도 변수이므로 사용하기 전에 선언을 해야 한다. 포인터의 선언 방법은 자료형과 변수명 사이에 구두점 *를 더 쓰면 된다.
  • (선언문에서 쓰는 *는 곱하기 연산자와 전혀 관계없는 구두점이다)

ex)

-int x;          //일반 변수 x의 선언
-int *x;         //포인터 (변수) x의 선언
-int* px;        //포인터 px의 선언
-int *px, y;     //px만 포인터, y는 일반 변수
-int *px, *py;   //px, py 둘 다 포인터
 
( *의 위치는 자료형과 변수명 사이 아무데나 있어도 된다.)
-int* px;   
-int * px;
-int *px;    
 
3가지 방법 다 가능

6. 참조 연산자 *

  • 포인터에 주소를 대입하는 방법이다.
  • int x = 10; //일반 변수 x의 선언과 초기화
  • px = &x;  //포인터 px에 변수 x의 주소를 대입
  • 포인터는 일반적으로 일반 변수명 앞에 주소 연산자(&)를 사용해 해당 변수의 주소를 저장한다.
  • 포인터 px에는 변수 x의 주소가 들어있다.
  • 포인터 앞에 *는 참조 연산자이다.
  • 곱하기 연산자 *와 모양은 같지만 우선 순위가 높다.

7. 범위 지정 연산자 '::' 

  • 멤버함수가 어느 클래스에 포함되어 있는지를 나타낼 때 사용하는 연산자이다.

  • 8행에서 범위 지정 연산자 :: 를 사용했다.
  • ::을 사용했기 때문에 8행에 존재하는 a는 블록({ }) 안에 있는 지역변수 a를 뜻하는 것이 아니라 블록 밖에 있는 전역 변수 a를 뜻하게 된다.
  • 즉, 8행은 a가 3이기 때문에 3+3이 되어서 6이라는 값이 나오게 된다.
728x90
반응형
저작자표시 (새창열림)

'C++' 카테고리의 다른 글

[C++] 함수 중첩과 디폴트 인자  (0) 2023.01.02
[C++] 객체와 멤버, 변수와 배열  (0) 2022.12.28
[C++] const, const 예제  (0) 2022.12.26
[C++] 함수, 기억클래스, 구조체  (1) 2022.09.22
[C++] 매개변수, 인자, 리턴값, 함수, 여러 예제  (0) 2022.09.18
  1. 1. 템플릿: 포괄적 함수(generic function)
  2. 1.1 템플릿 구현 형식
  3. 1.2 템플릿의 구현
  4. 2. 실매개변수, 형식매개변수
  5. 3. 매개변수를 전달하는 방법
  6. 4. 포인터와 주소
  7. 5. 포인터 선언
  8. 6. 참조 연산자 *
  9. 7. 범위 지정 연산자 '::' 
'C++' 카테고리의 다른 글
  • [C++] 함수 중첩과 디폴트 인자
  • [C++] 객체와 멤버, 변수와 배열
  • [C++] const, const 예제
  • [C++] 함수, 기억클래스, 구조체
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
피피아노의 개발 일지
IT 분야 크리에이터
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    비동기
    Vision Pro
    ios
    이니셜라이저
    스위프트
    티스토리챌린지
    메서드
    visionOS
    Xcode
    프로세스
    프로퍼티 래퍼
    배열
    오블완
    자바스크립트
    제어문
    연산자
    Initializers
    옵셔널
    함수
    디자인패턴
    SWIFT
    코딩테스트
    swiftUI
    UIKit
    클래스
    운영체제
    변수
    Optional
    combine
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[C++] 템플릿, 포인터와 주소, 범위 지정 연산자 ::

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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