프로그램/C,C++
[C++ 기본 2] 3. example(reference, template)
naudhizb
2022. 1. 29. 23:49
반응형
// 3_예제
#include <iostream>
// Swap를 만들어 봅시다.
// 1. C 버전
/*
void Swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
*/
// 2. C++ 레퍼런스 사용
/*
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
*/
// 3. 템플릿 도입
template<typename T>
void Swap(T& a, T& b)
{
T tmp = a;
a = b;
b = tmp;
}
int main()
{
double x = 3.4, y = 2.1;
//Swap(&x, &y);
Swap(x, y);
std::cout << x << std::endl;
std::cout << y << std::endl;
}
// 3_예제2.cpp
#include <iostream>
#include "Util.h"
#include <algorithm> // 이 안에 swap가 있습니다.
// Standard Template Library : STL
// C++ 표준이 제공하는 템플릿 기반 라이브러리.
int main()
{
int x = 10, y = 20;
std::swap(x, y);
util::Swap(x, y);
util::Add(x, y);
util::Sub(x, y);
std::cout << x << std::endl;
std::cout << y << std::endl;
}
const int c = 0; // const 전역변수 ?
// C언어 : external linkage
// C++ : internal linkage
// internal linkage (내부 연결) => 헤더 파일에 놓이는 것들
// 임의의 심볼이 자신을 선언한 컴파일 단위(파일)에서만 사용가능한것
// => 함수 템플릿, 인라인 함수, static 전역변수, static 일반함수
// 매크로,
// external linkage (외부 연결)
// 심볼이 프로젝트내의 모든 컴파일 단위(파일)에서 사용가능한것.
// => 일반 함수, 전역변수,
C++ 언어의 STL 라이브러리에서 기본적인 기능들을 제공한다.
반응형