1. cin
2. 공백 입력 받기 (getline)
split
getline(cin, str);
istringstream ss(str);
string stringBuffer;
vector<string> x;
x.clear();
while (getline(ss, stringBuffer, ' ')){
x.push_back(stringBuffer);
}
배열의 이해
int (*A)[3]의 이해 : int[3]을 가리키는 포인터 A
int(&ref)[3]의 이해 : int[3]을 참조하는 참조자 ref
(배열의 래퍼런스는 반드시 크기를 명시해야 함)
함수 오버로딩
씹어먹는 C++ 참조
C++ 컴파일러에서 함수를 오버로딩하는 과정
1 단계
자신과 타입이 정확히 일치하는 함수를 찾는다.
2 단계
정확히 일치하는 타입이 없는 경우 아래와 같은 형변환을 통해서 일치하는 함수를 찾아본다.
- Char, unsigned char, short 는 int 로 변환된다.
- Unsigned short 는 int 의 크기에 따라 int 혹은 unsigned int 로 변환된다.
- Float 은 double 로 변환된다.
- Enum 은 int 로 변환된다.
3 단계
위와 같이 변환해도 일치하는 것이 없다면 아래의 좀더 포괄적인 형변환을 통해 일치하는 함수를 찾는다.
- 임의의 숫자(numeric) 타입은 다른 숫자 타입으로 변환된다. (예를 들어 float -> int)
- Enum 도 임의의 숫자 타입으로 변환된다 (예를 들어 Enum -> double)
- 0 은 포인터 타입이나 숫자 타입으로 변환된 0 은 포인터 타입이나 숫자 타입으로 변환된다
- 포인터는 void 포인터로 변환된다.
4 단계
유저 정의된 타입 변환으로 일치하는 것을 찾는다 (출처)
만약에 컴파일러가 위 과정을 통하더라도 일치하는 함수를 찾을 수 없거나 같은 단계에서 두 개 이상이 일치하는 경우에 모호하다 (ambiguous) 라고 판단해서 오류를 발생하게 됨.
'학교 (업뎃X) > 수업관련' 카테고리의 다른 글
소프트웨어시스템설계:: Refactoring Tutorial (0) | 2023.03.31 |
---|---|
소프트웨어시스템설계:: Refactoring Intro (0) | 2023.03.08 |
자료구조:: CUTSET - 지역봉쇄 (0) | 2021.11.26 |
자료구조:: 최단거리 알고리즘 - City path (0) | 2021.11.19 |
C++ 프로그래밍:: Inheritance - More Topics 실습 복습 (0) | 2021.06.14 |