4月25日 C++day4

#include <iostream>
using namespace std;

class Person
{
    const string name;
    int age;
    char sex;
public:
    Person():name("lisi")
    {cout << "Person无参构造" << endl;}
    Person(string name,int age,char sex):name(name),age(age),sex(sex)
    {cout << "Person有参构造" << endl;}
    void show()
    {
        cout <<"person的show:"<< name << age << sex <<endl;
    }
    Person(const Person &other):name(other.name)
    {
        this->age = other.age;
        this->sex=other.sex;
        cout << "Person的拷贝构造函数" << endl;
    }
    Person &operator=(const Person &other)
    {
        if(&other!=this)
        {
            string name=other.name;
            this->age=other.age;
            this->sex=other.sex;
            cout << "Person的拷贝赋值函数" << endl;
        }
        return *this;
    }
};
class Stu
{
    Person p1;
    double *pd;
public:
    Stu():pd(new double)
    {cout << "Stu的无参构造" << endl;}
    Stu(string name,int age,char sex,double score):p1(name,age,sex),pd(new double(score))
    {cout << "Stu有参构造" << endl;}
    void show()
    {
        p1.show();
        cout << *pd <<endl;
    }
    Stu(const Stu &other):p1(other.p1)
    {
        this->pd=other.pd;
    }
    Stu &operator=(const Stu &other)
    {
        if(&other!=this)
        {
            this->p1=other.p1;
            *(this->pd)=*(other.pd);
            cout << "Stu的拷贝赋值函数" << endl;
        }
        return *this;
    }
};
int main()
{
    Person p2("wangwu",20,'n');
    p2.show();
    Person p3=p2;
    p3.show();
    Person p4;
    p4=p2;
    p4.show();
    Stu s2("zhangsan",20,'n',99.2);
    s2.show();
    Stu s3=s2;
    s3.show();
    Stu s4;
    s4=s2;
    s4.show();
    return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
 
 
using namespace std;
class myString
{
    private:
        char *str;          //变化c风格的字符串
        int size;            //记录字符串的实际长度
    public:
        //无参构造
        myString() : str(new char), size(0)
        {
            str[0] = '\0';
            cout<<"无参构造"<<endl;
        }
        //有参构造
        myString(const char* s)
        {
            size = strlen(s);
            str = new char[size + 1];
            strcpy(str, s);
            cout<<"有参构造"<<endl;
        }
        //拷贝构造
        myString(const myString &other)
        {
            size = other.size;
            str = new char[size + 1];
            strcpy(str, other.str);
            cout<<"拷贝构造函数"<<endl;
        }
        //拷贝赋值函数
        myString& operator=(const myString &other)
        {
             if (this != &other) {
                 
                 size = other.size;
                 str = new char[size + 1];
                 strcpy(str, other.str);
                 cout<<"拷贝赋值函数"<<endl;
             }
             return *this;
         }
        //析构函数
        ~myString()
        {
               delete[] str;
            cout<<"析构"<<endl;
           }
        //判空函数
        void empty()
        {
            if(size == 0)
            {cout<<"空"<<endl;}
            else
            {cout<<"非空"<<endl;}
 
        }
        //size函数
        void mysize()
        {
            cout<<"size = "<<size<<endl;
        }
        //c_str函数
        char* c_str()
        {
            return str;
        }
        //at函数
        char &at(int pos)
        {
            if (pos < 0 || pos >= size) {
                cout<<"位置不合法"<<endl;
            }
            return str[pos];
        }
};
int main()
{
    myString s1("hello");
    myString s2 = s1;
    myString s3;
    cout<<s1.at(4)<<endl;
    cout<<s1.c_str()<<endl;
    cout<<s2.at(4)<<endl;
    cout<<s2.c_str()<<endl;
    s2.empty();
    s2.mysize();
 
    return 0;
}

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

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

相关文章

【RAG 论文】Chain-of-Note:为 RAG 引入 CoT 让模型生成阅读笔记来提高面对噪音文档和未知场景的鲁棒性

论文&#xff1a;Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models ⭐⭐⭐ Tencent AI Lab, arXiv:2311.09210 文章目录 一、论文速读二、实现的细节2.1 Note Design2.2 Data Collection2.3 Model Training 三、实验结果3.1 QA Performance3.2 对 …

使用新版ESLint,搭配Prettier使用的配置方式

概述 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。 注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1…

014、Python+fastapi,第一个后台管理项目走向第14步:建立python+fastapi项目,创建common通用模块

一、说明 通用模块主要是完成文件的上传下载&#xff0c;抄吧&#xff0c;要不然怎么叫通用模块呢&#xff1f; 我把RuoYi-Vue3-FastAPI中的验证码模块放在这里了&#xff0c;我觉得验证也比较通用吧&#xff0c; 二、添加common通用模块 1、通用模块没有数据表&#xff0c…

涨跌失据了?现货白银市场的波动如何捕捉

现货白银市场近期出现了强劲的上涨&#xff0c;但近两个交易日&#xff0c;却出现了令人感觉诧异的大跌。很多刚入场打算买入做多的朋友&#xff0c;面对这两天这么强的跌势都感觉无所适从。到底现货白银市场的波动如何才能捕捉呢&#xff1f;下面我们就来讨论一下这个问题。 用…

阿里云物联网平台 | 透传与ICA标准数据格式(Alink JSON)| 定值SDK非动态注册与动态注册 | SOC+4G模组移植方案

文章目录 一、透传与ICA标准数据格式&#xff08;Alink JSON&#xff09;二、定值SDK选非动态注册还是动态注册三、SOC4G模组移植方案 一、透传与ICA标准数据格式&#xff08;Alink JSON&#xff09; 透传和ICA标准数据格式&#xff08;Alink JSON&#xff09;是物联网设备与阿…

DevOps(十二)Jenkins实战之Web发布到远程服务器

前面两篇博文介绍了怎么将django开发的web应用推送到gitlab源码仓库&#xff0c;然后jenkins服务器从gitlab仓库拉下来&#xff0c;布署到jenkins服务器上&#xff0c;并用supervisor进行进程管理&#xff0c;保证web应用一直能正常运行&#xff0c;今天我们继续优化&#xff0…

数据结构:初识集合框架

目录 1. 什么是集合框架2. 集合框架的重要性3. 背后所涉及的数据结构以及算法3.1 什么是数据结构3.2 容器背后对应的数据结构3.3 相关java知识3.4 什么是算法 1. 什么是集合框架 官方教程 Java 集合框架Java Collection Framework &#xff0c;又被称为容器和其实现类classes …

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性

记一次JSON.toJSONString()转换时非属性方法空指针异常排查及toJSONString保留null值属性 异常详情 有一个类&#xff0c;里面有两个属性和一个类似工具的getRealName()方法如下&#xff1a; getRealName()方法就是获取这个人的真实名字&#xff0c;如果获取不到就以name返回…

janus模块介绍-SIP Gateway

模块启动 默认的SIP GateWay也是https协议&#xff0c;端口为8088或者8089 如果需要在自己搭建的测试服务上测试SIP GateWay模块&#xff0c;则也需要修改为wss 具体改动如下: 找到/opt/janus/share/janus/demos/siptest.js var server "wss://" window.location…

Python与数据库连接

新建表boss create table 创建表 Code import pymysqlcon pymysql.connect(hostlocalhost,\userroot,\password,\port3306,\dbbusiness) cursorcon.cursor() cursor.execute(create table if not exists boss(id int auto_increment primary key,name varchar(20)not null…

打包的意义 作用等前端概念集合 webpack基础配置等

基础网页是什么&#xff1f; 在学校最基础的三剑客 原生JS CSS H5就可以开发静态网页了 对于浏览器而言也能识别这些基础的文件和语法&#xff0c;真正的所见即所得&#xff0c;非常直接。 为什么要使用框架库&#xff1f; 对于常用的前端框架而言&#xff0c;无论是Vue Rea…

什么样的内外网文档摆渡,可以实现安全高效传输?

内外网文档摆渡通常指的是在内网&#xff08;公司或组织的内部网络&#xff09;和外网&#xff08;如互联网&#xff09;之间安全地传输文件的过程。这个过程需要特别注意安全性&#xff0c;因为内网往往包含敏感数据&#xff0c;直接连接内网和外网可能会带来安全风险。因此会…

为什么深度学习模型在 GPU 上运行得更快:CUDA 编程简介

如今,当我们谈论深度学习时,通常会将其实现与利用 GPU 来提高性能联系起来。 GPU(图形处理单元)最初设计用于加速图像、2D 和 3D 图形的渲染。然而,由于它们能够执行许多并行操作,因此它们的实用性超出了深度学习等应用程序。 GPU 在深度学习模型中的使用始于 2000 年代…

保姆级银河麒麟V10高级服务器离线安装mysql5.7数据库

离线在银河麒麟高级操作系统v10安装mysql5.7 下载mysql5.7 MySQL :: Download MySQL Community Server (Archived Versions) 2、把下载好的包上传到服务器 3、解压 [root1-0001 ~]# cd /data/mysql[root1-0001 mysql]# tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz…

Beego框架学习:深入指南

文章目录 Beego框架学习&#xff1a;深入指南安装与设置创建控制器自定义路由使用中间件使用模板引擎使用ORM Beego框架学习&#xff1a;深入指南 Beego是一个快速开发Go语言应用的开源框架&#xff0c;它基于MVC模式设计&#xff0c;提供了一系列的工具和库&#xff0c;使得开…

C++ 之 string类的模拟实现

这学习我有三不学 昨天不学&#xff0c;因为昨天是个过去 明天不学&#xff0c;因为明天还是个未知数 今天不学&#xff0c;因为我们要活在当下&#xff0c;我就是玩嘿嘿~ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–…

Docker基础学习(3.Docker架构)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ ⭐微信公众号&#xff1a;码上言 文章目录 Docker基本概念1、镜像&…

JavaWeb-自学JSP组件报告

自学JSP组件报告 一、组件资源及作用 1. commons-fileupload-1.2.2.jar 组件作用&#xff1a;用于处理HTTP文件上传请求&#xff0c;提供了文件上传的解析和存储功能。它允许开发者在Web应用中轻松实现文件上传功能。 2. commons-io-2.4.jar 组件作用&#xff1a;提供了一…

springboot+vue新疆肉牛智慧牧场养殖系统

系统涉及的对象是奶牛。 系统使用员工有管理员和普通员工。 管理员有修改的权限&#xff0c;普通员工没有。 系统需要包含奶牛的编号&#xff0c;种类&#xff0c;体重&#xff0c;健康情况、生长情况、牛奶产量&#xff0c;以及上次更新数据时间等信息&#xff0c;管理员可以对…

Perfect Clear WorkBench 智能修图黑科技,你尽管拍剩下的交给我(v4.6.0.2653)

01 Perfect Clear Perfect Clear WorkBench是EyeQlmaging推出的先进图片处理工具&#xff0c;旨在自动优化和简化图像校正。它通过智能技术提高图片的清晰度、颜色保真度&#xff0c;并增强视觉效果&#xff0c;确保高品质输出。 它的核心优势是利用高级算法和AI技术&#xff…