64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
//测试高级重载
class Cint
{
public:
Cint(int value):m_nvalue(value)
{
}
~Cint(){}
//重载有一个很重要的主题就是类型转换,以下用法就是将Cint类转换为int类型了
operator int() const
{
return m_nvalue;
}
//下面返回的是一个指针了,反正都是为了类型转换
operator int*()
{
return &m_nvalue;
}
private:
int m_nvalue;
};
//下面的函数需要的是一个int类型的变量作为参数,但是后面的测试却给它一个Cint类对象
//这时调用的是Cint类中的那个重载int 的函数
void printInt(int value)
{
cout<<"value = "<<value<<endl;
}
void TestCint()
{
Cint ci(11);
printInt(ci);
}
void main()
{
TestCint();
}
operator Ty* ()//可以将类对象转化为Ty*
{
return m_ptr;
}
Ty* operator->()//重载->操作符。。
{
return m_ptr;
}
operator Ty** ()//可以将类对象转化为Ty**
{
Release();
return &m_ptr;
}
operator void** ()//可以将类对象转化为void**
{
Release();
return (void**)&m_ptr; //先取m_ptr的地址。。然后强制转化为void**类型。。
}