¿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