4月25日 C++day4

ops/2024/11/21 0:16:57/

#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;
}


http://www.ppmy.cn/ops/17164.html

相关文章

nvm安装及使用(mac)

安装 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash# orwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash这步会自动在你的文件中添加nvm配置文件. 如果你用的是zsh, 那就是 ~/.zshrc. 如果你用的 bas…

设计模式-创建型模式-工厂模式

工厂模式是一种用来创建对象的模式&#xff0c;它将对象的创建和使用分离开来&#xff0c;使得代码更加灵活和可扩展。 下面代码中CarFactory是一个工厂类&#xff0c;它根据传入的参数来创建不同类型的Car对象。通过工厂模式&#xff0c;在不改变客户端代码的情况下轻松地添加…

GIT 仓库迁移

GIT 仓库迁移 远端仓库迁移 ## 在远端提前创建仓库print-server ## 克隆所有分支 git clone --mirror http://X.X.X.X:8088/Print_Client.git ## 进入本地克隆目录 cd Print_Client.git ## 推送远端 git push --mirror http://X.X.X.X:8088/print/print-server.git本地项目迁…

睫毛膏上架亚马逊销售需要做什么准备 HRIPT / RIPT斑贴试验

睫毛膏上架需要办理&#xff1a;HRIPT / RIPT斑贴试验COA成分分析证书BCOP认证报告&#xff01; 什么是BCOP&#xff1a; 亚马逊美国站对接触眼睛的眼影&#xff0c;液体眼线笔&#xff0c;磁性睫毛&#xff0c;假睫毛等产品&#xff0c;需提供BCOP&#xff08;Bovine Corneal…

密码学基础 -- ECC

目录 1.ECC概述 1.1 汽车行业倾向使用ECC 1.2 ECC的难以理解 2.ECC原理 2.1 椭圆曲线真的不是一个椭圆 2.2 从图形了解ECC 2.3 ECC用法 3.ECC曲线汇总 1.ECC概述 1.1 汽车行业倾向使用ECC 当前公认安全有效的三大类公钥密钥体制分别为基于大数因子分解难题(RSA)、离散…

NLP step by step -- 了解Transformer

Transformer模型 Transformer相关历史 首先我们先看一下有关Transformer模型的发展历史&#xff0c;下面的图是基于Transformer架构的一些关键模型节点&#xff1a; 图片来源于Hugging Face 图片来源于Hugging Face Transformer 架构 于 2017 年 6 月推出。原本研究的重点是…

【Vision Pro应用】分享一个收集Apple Vision Pro 应用的网站

您是否也觉得 Vision Pro 应用程序商店经常一遍又一遍地展示相同的几个 VisionOS 应用程序?许多有趣、好玩的应用程序似乎消失得无影无踪,让人很难发现它们。为了帮助大家更轻松地探索和体验最新、最有趣的 Vision Pro 应用程序,这里分享一个网站https://www.findvisionapp.…

NumPy简单学习(需要结合书本)

NumPy简单学习&#xff08;需要结合书本&#xff1a;Python数据分析与应用&#xff09; 文章目录 NumPy简单学习&#xff08;需要结合书本&#xff1a;Python数据分析与应用&#xff09;前言导库&#xff1a; 一、大概内容1.掌握NumPy数组对象ndarray&#xff08;1&#xff09;…