C++构造函数问题17

输出

null

#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) 极客问答 极客问答 (B) 极客问答 极客问答 (C) 极客问答 极客问答 (D) 极客问答 极客问答 答复: (B) 说明: 由于没有复制构造函数,编译器会创建一个复制构造函数。编译器创建的复制构造函数在“String s2=s1

所以s1和s2的str指针都指向同一个位置。

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

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享