본문 바로가기
  • 쓸쓸한 개발자의 공부방

함수5

[C++] 함수 : Lamda expression (람다 표현식) Lamda 람다 표현식은 매우 자주 사용되며 유용하기에 필수로 알아 두어야 한다. https://en.cppreference.com/w/cpp/language/lambda 일반적인 함수는 global space에 만들어 놓고 함수의 이름을 사용해서 호출한다. lamda expression (람다표현식) - 코드 안에서 이름이 없는 함수를 만들어서 사용하는 방법 - 익명의 함수 ( anonymous function), 함수 리터럴 (literal) - 함수 반환타입과 이름을 제거하고 [ ] 를 표기해 사용한다. #include void foo(int a) { std::cout 2021. 8. 11.
[C++] 함수 : constexpr function constexpr function https://en.cppreference.com/w/cpp/keyword/constexpr constexpr 상수 constexpr int c = 1; constexpr function : 함수 앞에 constexpr 이 있는 형태 - 컴파일 할 때 값을 결정할 수 있으면, 컴파일 할 때 함수를 바로 실행한다. - 함수 인자값을 컴파일 시간에 결정할 수 없으면, 실행시간에 함수를 실행한다. constexpr int add(int a, int b) { return a + b; } int main() { int x = 1; int y = 1; int n1 = add(1, 1); // 컴파일 할 때 값을 결정할 수 있으면, 컴파일 할 때 함수를 바로 실행함. int n2 =.. 2021. 8. 10.
[C++] 함수 삭제 (function delete) 함수 삭제(function delete) 지금까지 대부분은 에러를 발생시키지 않게 하기 위한 코딩을 했다면, 제대로 코딩을 하기 위해 컴파일 에러를 발생시키는(?) 함수 삭제에 대해 살펴보겠습니다. 함수 삭제 코드를 실제 본 적은 없어서 이게 왜 필요한지 잘 이해가 어려웠으나 아래 예시를 통해 이해했습니다. 함수 삭제는 간단합니다. 아래 처럼 함수 선언 뒤에 = delete;를 붙여주면 함수 삭제가 됩니다. 컴파일 과정에서 삭제된 함수를 호출하면 에러가 발생합니다. void foo(int) = delete; // 함수 삭제 int main() { foo(10); // 컴파일 에러 발생 } 왜 함수 삭제가 필요한걸까? > 암시적 변환에 의한 의도치 않은 함수 호출을 방지하기 위해서 사용합니다. 함수 삭제를.. 2021. 8. 9.
[C++] 함수 : template, inline template 타입만 다르고 구현이 동일하거나 유사한 함수의 경우 템플릿을 활용할 수 있다. 아래와 같이 square() 함수가 2개가 있을 때, 구현이 동일하기에 템플릿으로 만들어 볼 수 있다. int square(int a) { return a * a; } double square(double a) { return a * a; } int main() { square(3); square(3.3); } square 함수 탬플릿은 아래와 같은 형태로 만들어 볼 수 있다. template 의미 : 템플릿을 만들거야! 물론 type을 하나 T로 받을 거야! 하나 받으면 이 형태로 아래 형태로 만들어줘! * T는 다른 값으로도 사용이 가능하지만 약속으로 굳어져서 거의 T를 사용함. // 템플릿 사용 방법 te.. 2021. 8. 9.
[C++] 함수 : default parameter, function overloading default parameter 함수가 만들어지는 시점에 입력받는 값이 없을 경우에는 default 값이 set되게 할 수 있다. default paramater라고 말한다. c++에서는 function 정의할 때 default parameter를 지정할 수 있다. 시, 분, 초 에서 '시' 값만 입력하면 나머지 분, 초는 0로 값이 설정되게 하는 예시다. void setAlarm(int h, int m = 0, int s = 0) { // ...... } int main() { setAlarm( 3, 4, 5); setAlarm( 3, 0, 0); setAlarm( 3); // 3, 0, 0 setAlarm( 3, 30); // 3, 30, 0 } default parameter 사용시 주의사항 2가지.. 2021. 8. 8.