64,637
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
class cls_ii;
class cls_i
{
public:
operator cls_ii();
};
class cls_ii
{
public:
cls_ii()
{
std::cout << "constructor(default)" << std::endl;
}
explicit cls_ii(cls_i& c)
: m_c(c)
{
std::cout << "constructor(cls_i)" << std::endl;
}
explicit cls_ii(int i)
: m_i(i)
{
std::cout << "constructor(int)" << std::endl;
}
~cls_ii()
{
std::cout << "destructor" << std::endl;
}
private:
cls_i m_c;
int m_i;
};
cls_i::operator cls_ii()
{
std::cout<<"cls_i::operator cls_ii()" << std::endl;
return cls_ii(3);
}
void funct(cls_i& c,int i)
{
{
cls_ii(c);
}
{
cls_ii(i);
}
{
cls_ii(2);
}
}
int main()
{
cls_i i;
funct(i,1);
return 1;
}
cls_ii(c);
等价于
cls_ii c;
constructor(default)
destructor
constructor(default)
destructor
constructor(int)
destructor
而不是“cls_i”,"int","int"。