Mám tento kod
struct MyRef
{
explicit MyRef(int* inRight) :
m_Ref(inRight)
{
}
int* m_Ref;
};
class XXX
{
public:
XXX(int* const Ptr = 0):
m_Val(Ptr)
{
cout << "XXX::CTOR(int*)" << endl;
}
XXX(XXX &inRight):
m_Val(inRight.m_Val)
{
cout << "XXX::CTOR(XXX&)" << endl;
}
XXX(MyRef inRight):
m_Val(inRight.m_Ref)
{
cout << "XXX::CTOR(MyRef)" << endl;
}
operator MyRef()
{
cout << "operator MyRef" << endl;
MyRef ret(m_Val);
m_Val = 0;
return ret;
}
~XXX()
{
cout << "XXX::DTOR() " << m_Val << endl;
delete m_Val;
}
private:
int* m_Val;
};
XXX MyCreate()
{
return XXX(new int);
}
int main()
{
XXX a = MyCreate();
return 0;
}
Proč se při volání funkce MyCreate volá konstructor XXX(MyRef inRight) a tím pádem operátor přetypování operator MyRef() ?
Děkuji.