[STL] 타입 변환 연산자 오버로딩

타입 변환 연산자 오버로딩
클래스에 각기 다른 타입으로 생성자를 오버로딩 하는 방식
소스코드
#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