使用用户定义类型进行对象转换

3
我们是否可以像对待普通数据类型一样,将对象转换为用户定义的类型? 比如我们对int进行类型转换:
int variable_one = (int)variable_name;
那么我们能否这样做:(complex) object_name; 其中complex是我写的用于复数加法的类,使用了operator+重载。
是否可以像这样普通地进行类型转换?还是说我们需要在调用此语句之前编写某些函数?或者根本不可能像这样进行类型转换?
3个回答

9

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)

请参阅有关类型转换的文章或参考任何C++入门书籍。


6

用户自定义类型转换,为用户类型定义转换运算符()。

例如:

#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 ;
}

0
为什么你想这样做呢?我猜如果你想创建一个类的对象,你应该编写适当的构造函数。正如你所知道的,构造函数可以被重载。因此,如果你需要以不同的方式构建你的对象,可以随意编写多个构造函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接