형변화 오버로딩을 어떤식으로 이해해야 할지모르겠습니다.
안녕하세요. 9.8 형 변환 강의를 듣던 중 이해가 되지 않는 부분이 있어서 질문합니다.
19~23줄에 있는 int형 변환 함수에 리턴타입이 없는이유가 궁금합니다.
함수가 클래스 내부변수에 이미 멤버로 정의가 되어있어서 변수에 접근할 수 있기 때문에 따로 리턴타입을 정의하지 않은건가요?
19줄 operator int 뒤에 있는 ()의 의미가 궁금합니다. 예를 들어 아래는 9-6 수업 첨자연산자 오버로딩의 예 입니다.
int& operator [] (const int index) { return m_list[index]; }
그런데 이경우는 매개변수도 정의가 되어있고 리턴타입도 정의가 되어있어서 [ ] 안에 값을 넣음으로서 이러한 기능이 작동하는것으로 알고있었습니다.
그런데 19줄은 매개변수가 없어서 int뒤에오는 ()가 매개변수를 담는 ()인지 아니면 위 예에서 [ ]같이 사용되는것인지 모르겠습니다. [ ] 처럼사용되는것이라면
47줄에는 ( )안에 Cents가 아닌 int가 들어가있는데 어째서 정상작동하는것인지 모르겠습니다.
앞서 1,2번의 궁금증을 해결하기보다는 그냥 오버로딩이 이러한 형식으로 작동하고 47~49줄 처럼 형태는 다르지만 오버로딩을 배우기전 알고있던 기본적인 형변환방식에 모두 적용이된다 라고만 이해하고있으면 될까요?
답변 1
1
하나씩 답변 드릴게요.
19~23줄에 있는 int형 변환 함수에 리턴타입이 없는이유가 궁금합니다.
클래스 내에서 정의된 operator 함수의 경우에는
operator int에서 어떤 리턴 타입인지 (어떻게 변환될지) 충분히 추론 가능하기 때문에
명시할 필요가 없습니다.
아래 링크에 답변이 상세히 나와 있으니 참고 바랍니다.
https://stackoverflow.com/questions/3814865/what-is-an-operator-int-function
https://en.cppreference.com/w/cpp/language/operators
operator int뒤에 있는 ()의 의미가 궁금합니다. (int& operator [] (const int index) { return m_list[index]; })와의 차이
일단 ()와 []는 용례가 좀 달라요.
operator int()에서 괄호는 이 함수가 int형으로 변환하는 데
사용되는 오버로딩 함수임을 나타냅니다.
추가로 들어주신 코드의 경우
int& operator [] (const int index) { return m_list[index]; }에도 ()는 오버로딩함수임을 나타내긴 하지만
[]의 경우에는 배열의 인덱스 오버로딩임을 나타냅니다.
배열의 인덱스 오버로딩을 학습해보시면 좋을 것 같습니다.
앞서 1,2번의 궁금증을 해결하기보다는 그냥 오버로딩이 이러한 형식으로 작동하고 47~49줄 처럼 형태는 다르지만 오버로딩을 배우기전 알고있던 기본적인 형변환방식에 모두 적용이된다 라고만 이해하고있으면 될까요?
개인적인 생각입니다만 만일 처음 학습하신다면 그 정도에서 이해해주시고
강의를 완강한 뒤 이해를 높인 뒤에 추후 심화학습으로써 파고들어가보시는 것도
좋지 않을까 싶습니다.
변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠
1
470
1
메모리 주소 10진수로 출력
1
655
1
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
1
501
1
여러가지 리턴 타입에 관한 강의가 어떤 걸까요?
1
534
1
메모리 주소에 관한 질분
0
679
1
인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.
0
553
1
형변환 오버로딩에서 const 관련 질문이 있습니다.
0
445
1
Digit 뒤에 reference를 사용하는 이유
0
510
1
4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결
0
324
1
dat파일이...
0
540
1
TODO:대입 연산자 오버로딩에 대한 소스코드입니다.
0
646
1
복사 생성자 관련 질문이 있습니다.
0
454
1
수업 중 궁금한점이 있습니다.
1
390
1
라이브러리자체가 이해가 되지 않습니다.
0
562
1
마지막 예제 질문
0
304
1
증감연산자 위치에 따른 수행 순서 질문입니다.
0
378
1
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
1
413
1
friend함수 관련 질문이 있습니다.
0
312
1
operator+ 정의부분에서 궁금한 것이 있습니다.
0
447
1
3분 17초 질문
0
352
1
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
0
448
1
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
0
449
2
const Something &st에서 const를 빼면 안되나요?
0
301
1
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
1
494
1





