private:
char *m_data; // 用于保存字符串 };
答案:String::~String()
{delete[]m_data;//由于m_data是内部数据类型,也可以写成delete m_data; }
String::String(const char *str) {if(str==NULL)
{m_data=new char[1];//若能加NULL判断则更好 *m_data=\0; } else
{int length=strlen(str);
m_data=new char[length+1]; //若能加NULL判断则更好 strcpy(m_data, str); } }
String::String(const String &other) {int length=strlen(other.m_data);
m_data=new char[length+1];//若能加NULL判断则更好 strcpy(m_data, other.m_data); }
String & String::operator=(const String &other) {if(this==&other) return *this;
delete[]m_data;
int length=strlen(other.m_data);
m_data=new char[length+1];//若能加NULL判断则更好 strcpy(m_data, other.m_data); return *this; }
void main()
{String str1(\str1.show(); str2=str1; str2.show(); String str3(str2); str3.show(); }__
C++程序设计模拟试卷(三)
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中 只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无 分。
1. 设有定义int i;double j=5;,则10+i+j值的数据类型是() A. int B. double C. float D. 不确定 答案:B
解析:考察数据的转换,j是double类型,运算只能作同类型的运算,所以要转换,而int能自动
转换为double类型,所以结果是double类型。
2. 要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为() A. const char *p=“ABCD”; B. char *const p=“ABCD”; C. char const *p=“ABCD”; D. const char * const p=“ABCD”; 答案:D
解析:const char *p说明禁止通过p修改所指向的数据。char * const p则说明不能修改 指针p的地址。因此const char * const p=“ABCD”;它禁止修改指针p本身,又禁止修改p