일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 기타
- 러블리즈
- DBMS 구성요소
- SQL 처리
- 슬픔의 후에
- 아이유
- 장범준
- DBMS
- 인덱스
- db
- 6학년 8반 1분단
- 레이디스코드
- 개발자
- 니가 참 좋아
- 악보
- oracle
- index
- 천공의 시간
- 스위트라떼
- nginx
- 오라클 아키텍처
- Inside Of Me
- 데이터베이스
- 신입
- 핑거스타일
- I'm fine thank you
- 말 더듬
- IT
- 오라클
- 봄 사랑 벚꽃 말고
취미로 음악을 하는 개발자
[C++] 스타일 함수 심화 본문
1. 오버로딩
: 자바를 했을 때에도 오버로딩에 대해 배운 적이 있다. 당연한 얘기지만 같은 함수라도 파라미터의 타입에 따라 다른 명령어를 줄 수 있다.
int형, double형, int형 포인터 타입의 오버로딩 코드이다.
따라서 인자의 타입에 따라 다른 결과를 나타낼 수 있다.
2. 기본값 초기화
: 자바에서는 없던 걸로 기억한다. (나중에 시간 나면 테스트 해봐야겠다.)
위의 두 개의 함수가 있는데 보통 내가 자바를 할 때에는 첫 번째 코드처럼 사용했다.
이렇게 했을 때의 단점은 itemId, cnt, sc의 인자를 다 받아서 사용하지만 사용자의 의도에 따라 일부만 사용하는 함수를 쓰고 싶을 때에는
따로 오버로딩하는 함수를 만들어서 써야 했다.
하지만 C++에서는 두 번째 코드와 같이 하나의 함수에 사용자가 원하는 만큼 인자를 줄 수 있다. (물론 주어진 파라미터 개수에 한해서)
예를 들어 itemId=1, cnt=2로 주고 싶으면 getItem(1, 2)로 주면 여기서 값은 itemId=1, cnt=2, sc=0 으로 주어진다.
itemId=3, cnt=1, sc=2로 주고 싶으면 getItem(3,1,2)로 주어진다.
여기서 중요한 것은 기본값으로 초기화 하지 않은 itemId 값은 반드시 주어져야 하고 기본값을 설정해준 파라미터 뒤에는 무조건 기본값으로 초기화를 한 파라미터만 올 수 있다.
위와 같은 코드는 올 수 없다는 이야기다.
번외. C++ 입출력 속도에 관하여
: C++에서 입출력을 처음에 cin과 cout을 사용하는데 이것이 속도가 다른 명령어에 비해 느리다는 것이다.
std::ios_base::sync_with_stdio(false);
위의 코드를 넣으면 scanf, printf와 속도가 비슷해진다고 하지만 위의 코드를 선언한 뒤에는 C 표준 입출력을 사용할 수 없게 된다고 한다.
멀티 스레딩도 되지 않는데, 따라서 보통 코드를 짤 때 scanf/printf를 권장한다고 한다.
출처
'공대인 > C[++]' 카테고리의 다른 글
[C++] 객체 생성과 소멸 (0) | 2019.05.05 |
---|---|
[C++] 클래스 (0) | 2019.04.23 |
[C++] Namespace (0) | 2019.04.12 |
[C++] 스타일 함수, 문법 (0) | 2019.04.07 |
개념 및 링크, 나중에 정리해서 글 써보기 (0) | 2019.04.07 |