Рубрики

Вывод программы C ++ | Набор 7

Предсказать вывод следующих программ на C ++.

Вопрос 1

class Test1 {

    int y;

};

  

class Test2 {

    int x;

    Test1 t1;

public:

    operator Test1() { return t1; }

    operator int() { return x; }

};

  

void fun ( int x)  { };

void fun ( Test1 t ) { };

  

int main() {

    Test2 t;

    fun(t);

    return 0;

}

Вывод: ошибка компилятора
В классе Test2 определены два оператора преобразования. Таким образом, объекты Test2 могут автоматически преобразовываться как в int, так и в Test1. Поэтому вызов функции fun (t) неоднозначен, поскольку есть две функции: void fun (int) и void fun (Test1), компилятор не может решить, какую функцию вызывать. В общем, операторы преобразования должны быть перегружены осторожно, поскольку они могут привести к неоднозначности.

вопрос 2

#include <iostream>

using namespace std;

  

class X {

private:

  static const int a = 76;

public:

  static int getA() { return a; }

};

  

int main() {

  cout <<X::getA()<<endl;

  return 0;

}

Вывод: программа компилирует и печатает 76
Как правило, не разрешается инициализировать элементы данных в объявлении класса C ++, но статические интегральные члены const обрабатываются по-разному и могут быть инициализированы с помощью объявления.

Пожалуйста, пишите комментарии, если вы найдете какие-либо неправильные ответы / объяснения, или вы хотите поделиться дополнительной информацией по темам, обсужденным выше.

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

Вывод программы C ++ | Набор 7

0.00 (0%) 0 votes