Рубрики

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

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

Вопрос 1

#include<iostream>
#include<string.h>

using namespace std;

  

class String

{

    char *p;

    int len;

public:

    String(const char *a);

};

  

String::String(const char *a)

{

    int length = strlen(a);

    p = new char[length +1];

    strcpy(p, a);

    cout << "Constructor Called " << endl;

}

  

int main()

{

    String s1("Geeks");

    const char *name = "forGeeks";

    s1 = name;

    return 0;

}

Выход:

Constructor called
Constructor called

Первая строка вывода печатается оператором «String s1 (« Geeks »);», а вторая строка печатается оператором «s1 = name;». Причиной второго вызова является то, что конструктор с одним параметром также работает как оператор преобразования (см. Это и это для подробностей).

вопрос 2

#include<iostream>

  

using namespace std;

  

class A

{

    public:

    virtual void fun() {cout << "A" << endl ;}

};

class B: public A

{

    public:

    virtual void fun() {cout << "B" << endl;}

};

class C: public B

{

    public:

    virtual void fun() {cout << "C" << endl;}

};

  

int main()

{

    A *a = new C;

    A *b = new B;

    a->fun();

    b->fun();

    return 0;

}

Выход:

C
B

Указатель базового класса может указывать на объекты дочерних классов. Указатель базового класса также может указывать на объекты классов внуков. Поэтому строка «A * a = new C;» действительна. Линия «a-> весело ();» печатает «C» , так как объект указал классу С и весело () объявлен виртуальным в А и В (см это для подробностей). Вторая строка вывода выводится оператором «b-> fun ();».

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

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

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

0.00 (0%) 0 votes