大白菜豆腐 2023-03-14 19:01 采纳率: 100%
浏览 14
已结题

关于#c++#的问题:一个是字符串类的派生

img


两道题关于c++的题目,一个是字符串类的派生,应该是多继承的问题

  • 写回答

4条回答 默认 最新

  • 关注

    都是类的继承问题

    #include <iostream>
    #include <cstring>
    using namespace std;
    class CStrOne
    {
    protected:
        char* str1;
    public:
        CStrOne(const char* p)
        {
            size_t len = strlen(p) + 1;
            str1 = new char[len];
            strcpy_s(str1, len, p);
        }
        ~CStrOne()
        {
            if (str1) delete[] str1; str1 = 0;
        }
        //获取字符串
        char* getStr1() { return str1; }
        //显示内容
        void show() { cout << str1 << endl; }
    };
    
    class CStrTwo :public CStrOne
    {
    private:
        char* str2;
    public:
        CStrTwo(const char* p1, const char* p2) :CStrOne(p1)
        {
            size_t len = strlen(p2) + 1;
            str2 = new char[len];
            strcpy_s(str2, len, p2);
        }
        ~CStrTwo()
        {
            if (str2) delete[] str2; str2 = 0;
        }
        void strCat()
        {
            size_t len1 = strlen(str1);
            size_t len2 = strlen(str2);
            size_t len = len1 + len2 + 1;
            char* ptr = new char[len];
            strcpy_s(ptr, len, str1);
            strcat_s(ptr, len, str2);
            ptr[len - 1] = 0;
            cout << ptr << endl;
            if(ptr) delete[] ptr;
            ptr = 0;
        }
    };
    
    int main()
    {
        char buf1[100], buf2[100], buf3[100];
        cout << "请输入一个字符串来构造CStrOne的实例:" << endl;
        cin.getline(buf1, 100);
        CStrOne str1(buf1);
        cout << "调用CStrOne的显示函数显示字符串的内容:"<<endl;
        str1.show();
    
        cout << "请输入两个字符串来构造CStrOne的实例(一行一个):" << endl;
        cin.getline(buf2,100);
        cin.getline(buf3, 100);
        CStrTwo str2(buf2,buf3);
        cout << "调用CStrTwo的合并函数合并两个字符串并显示:" << endl;
        str2.strCat();
    
        return 0;
    }
    

    都是一个套路

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑