Рубрики

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

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

Вопрос 1

#include<iostream>

using namespace std;

 

class A { 

 public:

    A(int ii = 0) : i(ii) {}

    void show() { cout << "i = " << i << endl;}

 private:

    int i;

};
 

class B {

 public:

    B(int xx) : x(xx) {}

    operator A() const { return A(x); }

 private:

    int x;

};
 

void g(A a)

{  a.show(); }
 

int main() {

  B b(10);

  g(b);

  g(20);

  getchar();

  return 0;

Выход:
я = 10
я = 20

Поскольку в классе A имеется конструктор преобразования , целочисленное значение может быть присвоено объектам класса A, и вызов функции g (20) работает. Кроме того, в классе B перегружен оператор преобразования, поэтому мы можем вызывать g () с объектами класса B.

вопрос 2

#include<iostream>

using namespace std;

  

class base {

    int arr[10];     

};

  

class b1: public base { };

  

class b2: public base { };

  

class derived: public b1, public b2 {};

  

int main(void)

  cout<<sizeof(derived);

  getchar();

  return 0;

}

Вывод: если целое число занимает 4 байта, то 80.

Так как b1 и b2 как наследование от базового класса, два экземпляра класса базы существует в производном классе. Такое наследование без виртуальных причин приводит к неэффективному использованию пространства и неясностей. Виртуальные базовые классы используются для экономии места и предотвращения неоднозначностей в таких случаях. Например, следующая программа печатает 48. 8 дополнительных байтов предназначены для учета информации, хранимой компилятором (подробности см. В этом)

#include<iostream>

using namespace std;

  

class base {

  int arr[10];     

};

  

class b1: virtual public base { };

  

class b2: virtual public base { };

  

class derived: public b1, public b2 {};

  

int main(void)

  cout<<sizeof(derived);

  getchar();

  return 0;

}

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

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

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

0.00 (0%) 0 votes