📜  C++ |构造函数|问题17

📅  最后修改于: 2021-05-25 23:54:18             🧑  作者: Mango

输出?

#include
#include
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)怪胎测验
极客
(B)怪胎测验
怪胎测验
(三)怪胎测验
极客
(D)怪胎
怪胎测验答案: (B)
说明:由于没有副本构造函数,因此编译器将创建一个副本构造函数。编译器创建的副本构造函数在“ String s2 = s1;”行中进行浅表复制。

因此,s1和s2的str指针都指向同一位置。

在类中必须有一个用户定义的副本构造函数,其指针具有动态内存分配的指针。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。