플로렌스라는 개발자

C++ 함수 템플릿의 특수화와 구체화

특수화(specialization) 암시적 구체화, 명시적 구체화, 명시적 특수화를 모두 특수화라고 합니다. 이들의 공통점은 이들이 일반화 서술을 나타내는 함수 정의가 아니라, 모두 구체적인 데이터형을 사용하느 함수 정의를 나타낸다는 것이기 때문입니다. 함수 템플릿에서의 명시적 특수화(Explicit Specialization) 명시적 특수화(explicit specialization)라는 특수화된 함수 정의를, 필요한 코드와 함께 제공될 수 있습니다. 컴파일러가 함수 호출에 정확히 대응하는 특수화된 정의를 발견하게 되면 템플릿을 찾지 않고 그 정의를 사용합니다. 명시적 특수화를 사용하는 이유는 특정 형식(데이터형)에 대한 범위를 줄여 특별한 동작을 하기 위해서입니다. 만약 매개변수가 int형일경우 다른..

프로그래밍/C++ 2019.08.22 Plorence

C++ 함수 템플릿(Function Template)

함수 템플릿(Function Template) 최신 C++ 컴파일러들은 가장 최근에 추가된 기능인 함수 템플릿을 구현합니다. 함수 템플릿은 int형이나 double형과 같은 구체적인 데이터형을 포괄할 수 있는 일반형(generic type)으로 함수를 정의합니다. 어떤 데이터형을 템플릿에 매개변수로 전달하면, 컴파일러가 그 데이터형에 맞는 함수를 생성합니다. 함수 템플릿 : 함수를 만들기 위한 템플릿 (정의를 말함) 템플릿 함수 : 템플릿으로부터 만들어지는 함수 (생성된 함수를 말함) 해당 용어에 대해 좀 더 자세히 알고 싶다면(https://sks3297.tistory.com/entry/C-%ED%95%A8%EC%88%98%ED%85%9C%ED%94%8C%EB%A6%BF%EA%B3%BC-%ED%85%9..

프로그래밍/C++ 2019.08.22 Plorence

C++ 디폴트 매개변수(Default Parameter)

디폴트 매개변수(Default Parameter) 디폴트 매개변수는 C++에서 새로 추가된 내용입니다. 디폴트 매개변수는 함수 호출에서 실제 매개변수를 생략했을 경우에 실제 매개변수 대신 사용되는 값입니다. #include int func(int num1 = 1, int num2 = 2) { return num1 + num2; } int main(void) { int result = func(); int result1 = func(1, 2); } func()라는 함수는 매개변수 num1와 num2를 더해서 리턴하는 함수입니다. 첫 번째 함수 호출 후 리턴 값(변수 result의 값)은 3이고 두 번째 함수 호출 후 리턴 값도 동일하게 3입니다. 디폴트 매개변수는 말그대로 '디폴트'입니다. 함수호출을 하는..

프로그래밍/C++ 2019.08.17 Plorence

C++ 함수에 전달하는 값을 설명할 때 헷갈리는 점

문득 어제 게시글을 작성하다가, 이런 생각이 들었습니다. 그때 "첫 번째 인자로 100을 넘겨주고.."를 작성하다가 "parameter와 argument는 다른 건데 인자가 아닌 것 같은데?"라는 생각이 문득 들었습니다. 인자와 같이 따라다니는 놈이 있는데, 그게 바로 인수입니다. 인자 인자는 매개변수를 뜻합니다. C++ 기초 플러스에서는 아래와 같이 서술되어 있습니다. "전달되는 값을 넘겨받는 데 쓰이는 변수를 형식 매개변수(formal parameter)라고 한다." void function(int a,int b){ } a, b가 인자인겁니다. 인수 전달하는 값을 뜻하는데, C++ 기초 플러스에서는 아래와 같이 서술되어 있습니다. "함수에 전달되는 값을 실제 매개변수(actual argument)라 ..

프로그래밍/C++ 2019.08.16 Plorence