2024/03/27(C++·day3)

一、思维导图

二、完成下面类

代码

#include <cstring>
#include <iostream>

using namespace std;

class myString
{
private:
    char *str;  // 记录C风格的字符串
    int size;   // 记录字符串的实际长度

public:
    // 无参构造函数
    myString() : size(10)
    {
        str = new char[size]; // 构造出一个长度为10的字符串
        strcpy(str, "");       // 初始化为空字符串
    }

    // 有参构造函数
    myString(const char *s)
    {
        size = strlen(s);
        str = new char[size + 1];
        strcpy(str, s);
    }

    // 拷贝构造函数
    myString(const myString &other)
    {
        size = other.size;
        str = new char[size + 1];
        strcpy(str, other.str);
    }

    // 析构函数
    ~myString()
    {
        delete[] str; // 释放内存
    }

    // 判空函数
    bool isEmpty() const
    {
        return (size == 0);
    }

    // size函数返回字符串长度
    int getSize() const
    {
        return size;
    }

    // c_str返回C风格字符串
    const char *c_str() const
    {
        return str;
    }

    // at函数访问指定位置字符
    char &at(int pos)
    {
        if (pos >= 0 && pos < size)
        {
            return str[pos];
        }
        else
        {
            // 索引超出范围,返回默认的字符
            static char default_char = '\0';
            return default_char;
        }
    }
};

int main()
{
    myString str1;                // 调用无参构造函数
    cout << "String 1: " << str1.c_str() << endl;

    myString str2("Hello Shanghai !");       // 调用有参构造函数
    cout << "String 2: " << str2.c_str() << endl;

    myString str3 = str2;         // 调用拷贝构造函数
    cout << "String 3: " << str3.c_str() << endl;

    cout << "string是否为空? " << (str1.isEmpty() ? "Yes" : "No") << endl;
    cout << "String2大小: " << str2.getSize() << endl;

    cout << "String2的第四个位置: " << str2.at(4) << endl;

    return 0;
}

实现效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/493599.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣Lc23--- 290. 单词规律(java版)-2024年3月27日

1.题目描述 2.知识点 1&#xff09;思路 &#xff08;1&#xff09;s.split(" "); 是将字符串 s 按空格进行分割&#xff0c;得到一个单词列表。 &#xff08;2&#xff09;建立模式字符和单词之间的双向映射关系&#xff0c;我们可以使用两个哈希映射&#xff08;或…

Oracle数据库管理:从基础到高级应用【文末送书-45】

文章目录 入门篇&#xff1a;初识Oracle进阶篇&#xff1a;深入学习Oracle精通篇&#xff1a;掌握Oracle高级技术Oracle从入门到精通&#xff08;第5版&#xff09;&#xff08;软件开发视频大讲堂&#xff09;【文末送书-45】 在当今数字化时代&#xff0c;数据是企业成功的关…

数据结构之单链表的详细实现(图解)

前言 本次博客讲结合图例讲解单向不带头非循环链表 此后会讲解一些题目 1单链表的实现 1.1什么是单链表 我们先看数组&#xff0c;即顺序表的是什么样的&#xff0c;再看链表 1.2单链表的特点 实际中要实现的链表的结构非常多样&#xff0c;以下情况组合起来就有8种链表结…

【业界动态】Digital Twin-数字孪生

绝大多数的人对数字孪生是一个模糊的概念&#xff0c;数字孪生也被称为数字映射、数字镜像&#xff0c;他既是一种技术&#xff0c;也是一种生态。随着互联网的建设与发展&#xff0c;数字孪生在未来又会如何发展&#xff0c;虚拟与现实之间会产生怎样的星火&#xff1f; 上帝按…

【MATLAB源码-第170期】基于matlab的BP神经网络股票价格预测GUI界面附带详细文档说明。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于BP神经网络的股票价格预测是一种利用人工神经网络中的反向传播&#xff08;Backpropagation&#xff0c;简称BP&#xff09;算法来预测股票市场价格变化的技术。这种方法通过模拟人脑的处理方式&#xff0c;尝试捕捉股票…

chrome 浏览器报错 This page will not function without javascript enabled

This page will not function without javascript enabled. Please enable javascript on your browser. 在访问公司spark history 页面时&#xff0c;发现页面加载不全&#xff0c;并提示如上报错&#xff0c;因此按照如下步骤&#xff0c;已解决问题。 在浏览器中启用 JavaS…

产品经理进阶:抖音电商的商业逻辑(抖店)

目录 内容简介 市场情况 作者简介 内容简介 最近看到很多人在讲如何开抖店、如何做无货源等等这些事情。 这个事本身没有什么问题&#xff0c;毕竟有人下场挖金子&#xff0c;就有人卖工具。 问题在于很多是边开店边传授知识&#xff0c;而抖店本身其实赚的是信息差的钱。…

Openstack创建和操作实例,实现与外部网络通信

一、熟悉OpenStack图形界面操作 1、了解Horizon项目 Horizon项目 各OpenStack服务的图形界面都是由Horizon提供的。Horizon提供基于Web的模块化用户界面。Horizon为云管理员提供一个整体的视图。Horizon为终端用户提供一个自主服务的门户。Horizon由云管理员进行管理与控制&a…

centos7.9安装mysql

1. 概述 官网&#xff1a;https://www.mysql.com/ MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management S…

稀碎从零算法笔记Day28-LeetCode:零钱兑换

前言&#xff1a;鸽了好多天了哈哈哈&#xff0c;虽然C站没更但是LC还是坚持刷的&#xff0c;任重道远啊&#xff01;(可恶的寝室熄灯) 题型&#xff1a;动态规划 链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述…

张宏波:希望 MoonBit 可以成为世界级的编程语言以及配套的工具链

首场线下 MeetUp 精彩回顾来啦&#xff01; 3月23日&#xff0c;MoonBit 的首场线下 MeetUp 如期而至&#xff0c;带来了一场关于国产软件新发展的探讨。这场活动汇集了五位行业内的知名专家&#xff0c;他们围绕国产基础软件的新发展&#xff0c;分享了四个充满洞见的主题。从…

Springboot整合Redis报错:Unable to connection Redis

今天在做Springboot整合Redis中碰到下列错误&#xff1a; 基于以上的错误首先在Xshell或者其他远程操控虚拟机的软件上看能不能连接到Redis: [zzllocalhost ~]$ redis-cli -h 192.168.136.132 -p 6379 -a ****** Warning: Using a password with -a or -u option on the comma…

AI大模型学习——AI领域技术发展

目录 前言 一、AI大模型学习的理论基础 二、AI大模型的训练与优化 三、AI大模型在特定领域的应用 四、AI大模型学习的伦理与社会影响 五、未来发展趋势与挑战 总结 前言 在当前技术环境下&#xff0c;AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力&#xff…

django orm DateTimeField 6位小数精度问题

from django.db.backends.mysql.base import DatabaseWrapperDatabaseWrapper.data_types[DateTimeField] "datetime"意思就是重写源码里面的DateTimeField字段

C++ 控制语句(一)

一 顺序结构 程序的基本结构有三种&#xff1a; 顺序结构、分支结构、循环结构 大量的实际问题需要通过各种控制流程来解决。 1.1 顺序结构 1.2 简单语句和复合语句 二 循环 2.1 for循环 语句流程图 注意&#xff1a;使用for语句的灵活性 三 while语句 四 do while语句

欧科云链OKLink:比特币第四次减半即将到来,收好这份数据宝典

减半一直是 Web3 领域重点关注的时间节点&#xff0c;由此产生的数据变动会对整个市场与生态产生关键影响。多链浏览器 OKLink 作为专业数据分析平台&#xff0c;一直以来在官方网站提供减半数据入口&#xff0c;供用户清晰查看各类资产的减半情况。&#x1f449; www.oklink.c…

Spring Boot 使用过滤器、拦截器、监听器

前言 作用 过滤器&#xff08;Filter&#xff09;&#xff1a;当有一堆请求&#xff0c;只希望符合预期的请求进来。拦截器&#xff08;Interceptor&#xff09;&#xff1a;想要干涉预期的请求。监听器&#xff08;Listener&#xff09;&#xff1a;想要监听这些请求具体做了…

Vue 与 React:前端框架对比分析

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

docker网段冲突导致主机连接不上

前提&#xff1a;windows电脑链接liunx服务器&#xff0c;liunx服务器里面起了docker。 场景&#xff1a;在liunx服务器里面&#xff0c;用docker-compose up -d启动容器过程中&#xff0c;终止了windows服务器连接liunx服务器 可能原因&#xff1a;1.docker自身的网卡网段与连…

AMEYA360代理 | 江苏长晶科技FST2.0高性能 IGBT产品介绍

江苏长晶科技股份有限公司是一家专业从事半导体产品研发、生产和销售的企业。自2019年起&#xff0c;连续4年被中国半导体行业协会评为 “功率器件十强企业”。2021年开始自主研发有着“工业CPU”之称的IGBT&#xff0c;截至2023年Q3在家电/工业/新能源等行业实现8款产品市场应…