#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클래스에 있는 오버로딩된 생성자들을 통해 특정 타입을 인자로 받는 생성자 호출을 통한 타입 변환(객체 생성 후 대입)이 가능해짐!