B 类中定义的转换运算符如何在以下代码中工作?我阅读了与堆栈溢出转换运算符相关的所有其他文章,但找不到关于两个不同类的对象相互转换的任何解释。任何帮助将不胜感激,因为我是 C++ 新手
对于以下代码:
#include<iostream>
using namespace std;
class A
{
int i;
public:
A(int ii = 0) : i(ii) {}
void show() { cout << i << endl; }
};
class B
{
int x;
public:
B(int xx) : x(xx) {}
operator A() const { return A(x); }
};
void g(A a)
{
a.show();
}
int main()
{
B b(10);
g(b);
g(20);
return 0;
}
我无法理解转换运算符的工作原理以及如何将值分配给 A 的对象。基本上我无法理解代码流,我想知道幕后,即转换是如何发生的?