在C++中,如果创建了一个对象,并且这个对象拥有私有数据,且数据为整形数据,那么将这个对象直接赋值给一个新创建的int型数据,编译器会报错。具体代码如下
class Test
{
public:
explicit Test(int data=0):m_data(data)
{
cout<<"Create Object : "<<this<<endl;
}
Test(const Test &t)
{
cout<<"Copy Create Object : "<<this<<endl;
m_data = t.m_data;
}
Test& operator=(const Test &t)
{
cout<<"Assgin :"<<this<<" : "<<&t<<endl;
if(this != &t)
{
m_data = t.m_data;
}
return *this;
}
~Test()
{
cout<<"Free Object : "<<this<<endl;
}
private:
int m_data;
};
void main()
{
t2 = 10;
int x = t2;
}
t2是一个对象,将他赋值给x,编译器会报错,错误原因是不能将一个对象赋值给一个整形,编译器不知道该怎么赋值。
解决方案是在公有方法内写入一个函数:
operator int ()
{
return m_data;
}
这个函数具体的作用是强制类型转换,他将t2强制转化成int型,函数的作用就是返回了这个对象的私有数据,然后赋值给了x。
本文介绍在C++中如何将包含私有整型数据的对象转换为整型。通过定义一个类型转换运算符,可以实现从自定义类实例到基本整型的无缝转换。
2万+

被折叠的 条评论
为什么被折叠?



