📜  C ++ |运算符重载|问题6

📅  最后修改于: 2021-06-01 03:08:25             🧑  作者: Mango

预测输出

#include
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)编译器错误
(B)

10
20

(C)

20
20

(D)

10
10

答案: (B)
说明:请注意,类B的as转换运算符重载,因此B的对象可以转换为A的对象。

此外,类A具有可以使用单个整数参数调用的构造函数,因此可以将int转换为A。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。