已知类 String 的原型为class string{public:string(const char *str=null);//普通构造函数string(const string &other);//拷贝构造函数---string(void);string &operate=(const string &other);//赋值函数private:char * m-data;//用于保存字符串};请编写 string 的上述4 个函数

题目

已知类 String 的原型为

class string

{

public:

string(const char *str=null);//普通构造函数

string(const string &other);//拷贝构造函数

---string(void);

string &operate=(const string &other);//赋值函数

private:

char * m-data;//用于保存字符串

};

请编写 string 的上述4 个函数


相似考题
更多“已知类 String 的原型为 class string { public: string(const char *str=null);//普通构造函 ”相关问题
  • 第1题:

    对于下面的程序includeincludechar * scmp(char * s1,char * s2){if(strcm

    对于下面的程序 #include<stdio.h> #include<string.h> char * scmp(char * s1,char * s2) { if(strcmp(s1,s2)<0)return(s1); else return(s2); } main() { int i;char string[20],str[3][20]; for(i=0;i<3;i++)gets(str[i]); strcpy(string,scmp(str[0],str[1])); strcpy(string,scmp(string,str[2])); printf("%s\n",string); } 若运行时依次输入abcd、abba和abc三个字符串,则输出结果为 ______。

    A.abcd

    B.abba

    C.abc

    D.abca


    正确答案:B
    解析:本题自定义函数scmp()的作用是比较字符串s1和s2的大小,如果s1s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abcd、abba和abc三个字符串,执行strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(stringstr[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

  • 第2题:

    编写类 String 的构造函数、析构函数和赋值函数

    已知类 String的原型为:

    class String

    {

    public:

    String(const char *str = NULL); // 普通构造函数

    String(const String &other); // 拷贝构造函数

    ~ String(void); // 析构函数

    String & perate =(const String &other); // 赋值函数

    private:

    char *m_data; // 用于保存字符串

    };

    请编写 String的上述 4 个函数。


    正确答案:
     

  • 第3题:

    下列程序片段中不正确的字符串赋值或初始化方式是()。

    A.char str[10]; str=”string”;

    B.char *str; str=”string”;

    C.char str[7]={’s’,’t’,’r’,’i’,’n’,’g’,’0’};

    D.char str[ ]=”string”;


    char str[10]; str=”string”;

  • 第4题:

    已知String类定义如下:

    class String

    {

    public:

    String(const char *str = NULL); // 通用构造函数

    String(const String &another); // 拷贝构造函数

    ~ String(); // 析构函数

    String & perater =(const String &rhs); // 赋值函数

    private:

    char *m_data; // 用于保存字符串

    };

    尝试写出类的成员函数实现。


    正确答案:

     

    String::String(const char *str)
    {
    if ( str == NULL ) //strlen在参数为NULL时会抛
    异常才会有这步判断
    {
    m_data = new char[1] ;
    m_data[0] = '\0' ;
    }
    else
    {
    m_data = new char[strlen(str) + 1];
    strcpy(m_data,str);
    }
    }
    String::String(const String &another)
    {
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
    }
    String& String::operator =(const String &rhs)
    {
    if ( this == &rhs)
    return *this ;
    delete []m_data; //删除原来的数据,新开一块内

    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
    }
    String::~String()
    {
    delete []m_data ;
    }

  • 第5题:

    本题分别比较两个字符串"A"和"a"是否相等,并比较两个字符"A"和"a"是否相等,并输出比较结果。

    public class javal{

    public static void main(String[]args){

    cl=‘A ‘;c2=‘a‘;

    String strl=new String("A"),str2=new String

    ("a"):

    if( )

    System.Out.println("char"+c1+"equals"+"char"

    +c2);

    else

    System.OUt.println("char"+cl+"doesn‘t equal

    "+"char"+c2);

    if( )

    System.out.println("string"+strl+"equals"+

    "string"+str2):

    else

    System.OUt.println("string"+strl+"doesn‘t e-

    qual"+"string"+str2); .

    }

    }


    正确答案:
    第1处:charcl,c2第2处:cl==c2第3处:strl.equals(str2)【解析】第1处声明两个字符型变量cl和c2;第2处表示当cl等于c2时if条件为真;第3处判断strl和str2是否相等,返回值是布尔类型true或false。