C++ | Constructores | Pregunta 17 – Part 1

¿Producción?

#include<iostream>
#include<string.h>
using namespace std;
  
class String
{
    char *str;
public:
     String(const char *s);
     void change(int index, char c) { str[index] = c; }
     char *get() { return str; }
};
  
String::String(const char *s)
{
    int l = strlen(s);
    str = new char[l+1];
    strcpy(str, s);
}
  
int main()
{
   String s1("geeksQuiz");
   String s2 = s1;
   s1.change(0, 'G');
   cout << s1.get() << " ";
   cout << s2.get();
}

(A) GeeksQuiz
geeksQuiz
(B) GeeksQuiz
GeeksQuiz
(C) geeksQuiz
geeksQuiz
(D) geeksQuiz
GeeksQuiz

Respuesta: (B)
Explicación: dado que no hay un constructor de copia, el compilador crea un constructor de copia. El constructor de copia creado por el compilador hace una copia superficial en la línea «String s2 = s1;»

Entonces, los punteros str de s1 y s2 apuntan a la misma ubicación.

Debe haber un constructor de copia definido por el usuario en las clases con punteros de asignación de memoria dinámica.
Cuestionario de esta pregunta

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 *