Рубрики

C ++ | Конструкторы | Вопрос 17

Выход?

#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
(С) geeksQuiz
geeksQuiz
(D) geeksQuiz
GeeksQuiz

Ответ: (Б)
Объяснение: Поскольку конструктор копирования отсутствует, компилятор создает конструктор копирования. Созданный компилятором конструктор копирования выполняет поверхностное копирование в строке «String s2 = s1;»

Таким образом, str-указатели s1 и s2 указывают на одно и то же местоположение.

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

C ++ | Конструкторы | Вопрос 17

0.00 (0%) 0 votes