C++/Overloading
2021. 3. 16. 00:29
형변환 오버로딩 (Typecasts Overloading)
(int)객체
,int(객체)
,static_cast<int>(객체)
등의 형태로 형변환을 할 수 있게 해준다.묵시적 형변환도 가능해진다.
예제
#include <iostream>
class Cents
{
int cents_;
public:
Cents(int cents = 0) { cents_ = cents; }
operator int()
{
std::cout << "cast here" << std::endl;
return cents_;
}
};
void printInt(const int& value)
{
std::cout << value << std::endl;
}
int main()
{
using namespace std;
Cents cents(7);
printInt(cents);
int value;
value = (int)cents;
value = int(cents);
value = static_cast<int>(cents);
}
/* stdout
cast here
7
cast here
cast here
cast here
*/
다른 객체로의 형변환 오버로딩도 가능하다.
#include <iostream> class Cents { int cents_ = 0; public: Cents(const int& cents = 0) { cents_ = cents; } operator int() { std::cout << "cast here" << std::endl; return cents_; } }; class Dollars { int dollars_ = 0; public: Dollars(const int& dollars = 0) { dollars_ = dollars; } operator Cents() { return Cents(dollars_ * 100); } }; void printInt(const int& value) { std::cout << value << std::endl; } int main() { using namespace std; Dollars dol(2); Cents cents(dol); printInt(cents); } /* stdout cast here 200 */
'C++ > Overloading' 카테고리의 다른 글
C++ 대입 연산자 오버로딩 (Assignment Operator Overloading) (0) | 2021.03.19 |
---|---|
C++ 괄호 연산자 오버로딩 (Parenthesis Operator Overloading) (0) | 2021.03.16 |
C++ 첨자 연산자 오버로딩 (Subscript Operator Overloading) (0) | 2021.03.16 |
C++ 증감 연산자 오버로딩 (Increment and Decrement Operator Overloading) (0) | 2021.03.16 |
C++ 비교 연산자 오버로딩 (Comparison Operator Overloading) (0) | 2021.03.16 |