2011-10-09 4 views
1

일반 데이터 형식과 마찬가지로 사용자 정의 형식으로 개체를 캐스팅 할 수 있습니까? 님이 다음과 같이 int 형식의 캐스트를 수행한다고 말하면 :사용자 정의 형식의 캐스팅 개체

int variable_one = (int) variable_name;

이렇게 할 수 있습니다. (complex) object_name; 여기서 complex는 operator + overloading을 사용하여 복소수 추가를 위해 작성한 클래스입니다.

정상적인 방법으로 가능합니까? 또는이 구문을 호출하기 전에 몇 가지 기능을 작성해야합니까? 또는 이런 유형의 캐스트가 전혀 가능하지 않습니까?

고마워요 :) 감사합니다, 인 Ashish

답변

6

int variable_one=(int)variable_name;는 C 스타일 캐스트입니다.

C++은 많은 캐스팅 연산자를 제공

  • dynamic_cast <new_type> (expression)
  • reinterpret_cast <new_type> (expression)
  • static_cast <new_type> (expression)
  • const_cast <new_type> (expression)

article about type casting에서 보라 또는 C++ 입문 책을 참조하십시오.

0

왜 이것을하고 싶습니까? 클래스의 객체를 만들려면 적절한 생성자를 작성해야합니다. 아시다시피, 생성자가 오버로드 될 수 있습니다. 객체를 여러 가지 방법으로 생성해야하는 경우 하나 이상의 생성자를 자유롭게 작성하십시오.

2

사용자 정의 유형 사용자 유형에 대해 정의 된 형변환 연산자().

예.)

#include <iostream> 
#include <cmath> 

using namespace std; 

struct Point { 
    int x; 
    int y; 
    Point(int x, int y):x(x), y(y){} 
    operator int(){ 
     return sqrt(x*x+y*y); 
    } 
}; 

int main() { 
    Point point(10,10); 
    int x = (int)point; 
    cout << x ; 
} 
관련 문제