使用用户定义的类型转换对象

时间:2011-10-09 07:13:42

标签: c++ casting user-defined-types

我们可以使用用户定义的类型转换对象,就像我们对普通数据类型一样吗? 比如说我们为int输入类型:

int variable_one =(int)variable_name;

我们可以这样做:(复杂)object_name; 复杂是我为使用operator +重载添加复数而编写的类。

这种正常方式有可能吗? 或者在调用此声明之前我们是否需要编写一些函数? 或者根本不可能像这样输入?

非常感谢:) 问候, 阿希什

3 个答案:

答案 0 :(得分:8)

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 ++入门书籍。

答案 1 :(得分:3)

用户定义的类型转换为用户类型定义了cast operator()。

例)

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

答案 2 :(得分:0)

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