Salida del programa C++ | conjunto 10

Prediga la salida de los siguientes programas C++.
Pregunta 1
 

C

#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;
}

Producción: 
 

Constructor called
Constructor called

La primera línea de salida se imprime con la declaración «String s1 («Geeks»);» y la segunda línea se imprime con la instrucción “s1 = nombre;”. El motivo de la segunda llamada es que un constructor de un solo parámetro también funciona como un operador de conversión (consulte this y this para obtener más detalles). 
Pregunta 2 
 

CPP

#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;
}

Producción: 
 

C
B

Un puntero de clase base puede apuntar a objetos de clases secundarias. Un puntero de clase base también puede apuntar a objetos de clases secundarias. Por lo tanto, la línea “A *a = nueva C;” es válida. La línea “a->fun();” imprime «C» porque el objeto apuntado es de clase C y fun() se declara virtual tanto en A como en B (ver esto para más detalles). La segunda línea de salida se imprime con la instrucción «b->fun();».
Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *