타입 변환 연산자 오버로딩
클래스에 각기 다른 타입으로 생성자를 오버로딩 하는 방식
소스코드
#include <iostream>
using namespace std;
class A {};
class B {
public:
/*B() { cout << "B() 생성자" << endl; }
B(A& _a) { cout << "B(A _a)생성자" << endl; }
B(int n) { cout << "B(int n)생성자" << endl; }
B(double d) { cout << "B(double b)생성자" << endl; }*/
operator A() {
cout << "B(A _a)생성자" << endl;
return A();
}
operator int() {
cout << "B(int n)생성자" << endl;
return 10;
}
operator double() {
cout << "B(double b)생성자" << endl;
return 5.5;
}
};
void main() {
A a;
int n;
double d;
B b;
a = b;
n = b;
d = b;
cout << endl;
a = b.operator A();
n = b.operator int();
d = b.operator double();
}
코드 내용
A 클래스 타입 a, int형 n, double형 d를 그리고 B클래스타입 b 총 4개를 미리 정의
b에 각각 a, n, d에 대한 생성자로 할당해줌.
B클래스에 있는 오버로딩된 생성자들을 통해 특정 타입을 인자로 받는 생성자 호출을 통한 타입 변환(객체 생성 후 대입)이 가능해짐!
실행 결과
'C++ > STL' 카테고리의 다른 글
[STL] 1장 문제풀이 (0) | 2025.02.15 |
---|---|
[STL] 클래스 타입 변환 연산자 오버로딩 (0) | 2025.02.09 |
[STL] 스마트 포인터 (0) | 2025.02.09 |
[STL] 배열 인덱스 연산자 오버로딩 (0) | 2025.02.09 |
[STL] 함수 호출 연산자 오버로딩 (0) | 2025.02.09 |