我们可以使用用户定义的类型转换对象,就像我们对普通数据类型一样吗? 比如说我们为int输入类型:
int variable_one =(int)variable_name;
我们可以这样做:(复杂)object_name; 复杂是我为使用operator +重载添加复数而编写的类。
这种正常方式有可能吗? 或者在调用此声明之前我们是否需要编写一些函数? 或者根本不可能像这样输入?
非常感谢:) 问候, 阿希什
答案 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)
你为什么要这样做?我想如果你想创建一个类的对象,你应该编写适当的构造函数。如您所知,构造函数可能会过载。因此,如果您需要以不同方式构造对象,请随意编写多个构造函数。