gpt4 book ai didi

c++ - 使用转换运算符对两个不同类的对象进行相互转换

转载 作者:行者123 更新时间:2023-11-30 02:25:05 29 4
gpt4 key购买 nike

类 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 的对象。基本上我无法理解代码流程,我想知道幕后情况,即转换是如何进行的?

最佳答案

这是发生了什么:

  1. 您创建b(类型:B)
  2. 你调用 g 传递 b 作为它的参数
  3. bB 类型,g 需要 A 类型的变量,g 寻找一种方法将 B 转换为 A
  4. AB都是类,B重载了“转换运算符”operator A()
  5. g 的输入自动转换为返回 Ab.operatorA()
  6. g 执行时 ab.operatorA()
  7. ga
  8. 上调用方法 show
  9. g 结束

关于c++ - 使用转换运算符对两个不同类的对象进行相互转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44811966/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com