c++ 사칙연산 함수 (오버로딩,템플릿)

c++ 사칙연산 함수 (오버로딩,템플릿)

작성일 2022.10.15댓글 1건
    게시물 수정 , 삭제는 로그인 필요

사칙연산을 만들어야 하는데 두 수와 연산자를 받는 함수를 이용하라고 오버로딩과 템플릿을 활용해 ㅎ함수의 수를 줄이는게 핵심인데 

음 먼저 연산자를 받는데 더하기,곱하기,나누기,빼기 다 받으면
어차피 함수가 4개 생겨야 하는거 아닌가요?
함수 오버로딩은 이름이 같아야하는건데 사칙연산이라서 함수 4개야 생겨야하는거 아닌가요,,?

함수의 수를 어떻게 줄일수가 있나요??


#c++ 사칙연산 #c++ 사칙연산 계산기 #c++ 사칙연산 우선순위 계산기 #c++ 사칙연산 순서 #c++ 사칙연산 클래스 #c++ 사칙연산 함수 #c++ 복소수 사칙연산 #c++ 연산자 오버로딩 사칙연산 #dev c++ 사칙연산 #프로그래머스 사칙연산 c++

profile_image 익명 작성일 -

오버로딩을 하려면 필요한 함수의 갯수만큼 다 필요합니다. 절대 줄일 수 있는 것이 아니죠.

여기서 말하는 오버로딩은 연산자 오버로딩을 뜻하는 것이죠. 그런데 보통 연산자 오버로딩을 하는 경우 예상외로 많은 오버로딩 함수가 필요합니다.

예를 들어서 복소수를 생각해보죠. 복소수의 경우에는 (1+3i) * (3 + 2i)와 같은 것도 있지만, 3*(2+3i) 같은 경우도 있고, (2+3i)*3 의 경우도 있습니다. 이것들에 대해서 적절하게 다 만들어주셔야 합니다. 문제는 3*(2+3i) 같은 경우죠. 이것은 복소수 클래스에서 바로 오버로딩할 수가 없고, friend 함수를 이용해서 제작해주셔야 합니다. 그래서 보통 연산자 오버로딩을 하게되면, 단순하게 4개만 만드는 것이 아니고 훨씬 많은 개수의 오버로딩 함수가 필요합니다.

두번째로 템플릿을 쓰는 경우에는 C++에서는 다소 복잡합니다. 자바나 C#에서는 인터페이스를 통해서 규격을 맞추는 작업이 있지만, C++은 상속에 의해서 처리해야 하는 부분입니다. 템플릿을 통해서 하는 경우에는 일반적인 함수인 Add(...), Multiply(...), Divide(...), Substract(...) 등을 만들어 두셔야 합니다. 그래야 보편적인 템플릿 클래스를 만들 수 있죠. 거기에 복소수와 같은 새로운 자료형이 들어가면, 이형 자료에 대한 처리는 팀플릿으로 꽤 어려운 작업이 됩니다.

목적하고 있는 바가 정확하게 무엇인지 모르겠지만, 오버로딩이라는 것은 결국 상위단에서 프로그램을 보다 직관적으로 짜기 위한 목적이라서, 충분하게 많은 케이스를 만들어주셔야 한다는 점입니다. 또한 템플릿 역시 보편적으로 인터페이스를 맞춘다는 개념이기때문에 인터페이스와 비슷한 개념을 가지고 상속을 사용하셔야 한다는 점입니다. 결코 쉬운 일은 아닙니다.

c++ 사칙연산 함수 (오버로딩,템플릿)

사칙연산을 만들어야 하는데 두 수와 연산자를 받는 함수를... 개수의 오버로딩 함수가 필요합니다. 두번째로 템플릿을 쓰는 경우에는 C++에서는 다소 복잡합니다. 자바나 C...

C++ 함수 템플릿 오버로딩

이게 왜 첫번째에서는 첫번째함수가 선택되는데 두번째 사진에서는 두번째 함수가... 아래 함수는 애당초 매칭이 되질 않습니다. 두번째 사진에서는 t가 int이면 아래...

C++ 템플릿 함수 오버로딩 질문

... t = int이면 위의 함수가 매칭될 수 있습니다.... t = int이면 위의 함수가 aa(&a, b)와 매칭될 수 있습니다.... 아래 함수가 aa(&a, b)와 매칭될 수 있습니다. 두번째...

c++ 연산자 오버로딩 관련

이문제인데 덧셈, 뺄셈, 곱셈, 나눗셈, <<은 오버로딩... 사칙연산 구할때 최대공약수와 최소공배수를 저 코드에서 클래스의 private부분에 멤버함수로 추가하여...

C++ 함수 오버로딩 질문요

... 출력하는 오버로딩 함수를 작성하시오.(함수명 max) 이거고요 제가... int로하자니 char나 double을 받을시에러가 뜨고 템플릿클래스를...

c++사칙연산

... 나누기의 경우 0으로 나뉘어지는지 반드시 확인해야하는데 함수 오버로딩템플릿을 이용해 함수의 수를 가능한 줄여보라는 문제인데 음 함수...

c++ 템플릿 질문

... (mylist.cpp 는 작성하지 않음) main함수에는 연산자 << 오버로딩 부분을 집어 넣는다. * Hint: MyList 템플릿 클래스 안에 MyLink...

[C++] 템플릿관한 기초 질문입니다.

C++를 공부하는 아주 초보학생입니다. 저희 교수님께서 오버로딩 두개를 템플릿 하나로 만드는... 어떤 함수를 만들었습니다 예를들어 처음에는 int 값...