Рубрики

Вывод программы C ++ | Комплект 6

Прогнозировать выход программ C ++, указанных ниже.

Вопрос 1

#include<iostream>

  

using namespace std;

  

class Test {

    int value;

public:

    Test (int v = 0) {value = v;}

    int getValue() { return value; }

};

  

int main() {

    const Test t;  

    cout << t.getValue();

    return 0;

}

Вывод: ошибка компилятора.

Константный объект не может вызывать неконстантную функцию. Приведенный выше код может быть исправлен с помощью getValue () const или t неконстантным. Ниже приведена модифицированная программа с getValue () в качестве const, она отлично работает и выводит 0.

#include<iostream>

  

using namespace std;

  

class Test {

    int value;

public:

    Test (int v = 0) { value = v; }

    int getValue() const { return value; }

};

  

int main() {

    const Test t;  

    cout << t.getValue();

    return 0;

}

вопрос 2

   
#include<iostream>

  

using namespace std;

  

class Test {

    int &t;

public:

    Test (int &x) { t = x; }

    int getT() { return t; }

};

  

int main()

{

    int x = 20;

    Test t1(x);

    cout << t1.getT() << " ";

    x = 30;

    cout << t1.getT() << endl;

    return 0;

}

Вывод: ошибка компилятора
Поскольку t является ссылкой в Test, она должна быть инициализирована с использованием списка инициализаторов. Ниже приводится модифицированная программа. Работает и печатает «20 30».

#include<iostream>

  

using namespace std;

  

class Test {

    int &t;

public:

    Test (int &x):t(x) {  }

    int getT() { return t; }

};

  

int main() {

    int x = 20;

    Test t1(x);

    cout << t1.getT() << " ";

    x = 30;

    cout << t1.getT() << endl;

    return 0;

}

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

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

Вывод программы C ++ | Комплект 6

0.00 (0%) 0 votes