Рубрики

C ++ | Перегрузка оператора | Вопрос 6

Предсказать выход

#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) Ошибка компилятора
(В)

10
20

(С)

20
20

(D)

10
10

Ответ: (Б)
Объяснение: Обратите внимание, что класс B перегружен оператором преобразования, поэтому объект B можно преобразовать в объект A.

Кроме того, класс A имеет конструктор, который можно вызывать с одним целочисленным аргументом, поэтому int можно преобразовать в A.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Перегрузка оператора | Вопрос 6

0.00 (0%) 0 votes