当前位置: 首页 > news >正文

C++类与对象:构造函数与拷贝控制

#include <iostream> using namespace std; class Person { const string name; int age; char sex; public: Person():name("zhangsan"){/*cout << "Person的无参构造" << endl;*/ } Person(const string name,int age,char sex):name(name),age(age),sex(sex) { // cout << "Person的有参构造" << endl; } ~Person() { // cout << "Person的析构函数" << endl; } void show() { cout << " name=" << name << " age=" << age << " sex=" << sex <<endl; } Person(const Person &other):name(other.name)/*,age(other.age),sex(other.sex)*/ { this->age=other.age; this->sex=other.sex; } Person &operator=(const Person &other) { if(this!=&other) { //const string nmae 构造函数时已经初始化 this->age=other.age; this->sex=other.sex; cout << "Person的拷贝赋值" <<endl; } return *this; }; }; class Stu { Person A; double *p; public: Stu():p(new double) { cout << "Stu的无造函数" << endl; } Stu(const string name,int age,char sex,double score):A(name,age,sex),p(new double(score)) { cout << "Stu的有参构造" << endl; } ~Stu() { delete p; cout << "Stu的析构函数" << endl; } void show() { cout << "p=" << p; cout << " *p=" << *p << endl; A.show(); } Stu(const Stu &other):p(new double(*(other.p))),A(other.A){} Stu &operator=(const Stu &other) { this->A=other.A; *(this->p)=*(other.p); cout << "Stu的拷贝函数" << endl; } }; int main() { // Stu t1; // t1.show(); // Stu t2("lisi",3,'s',99.9); // t2.show(); Person t3("wangwu",17,'m'); Person t4; t4=t3; t3.show(); t4.show(); Stu t5("wangwu",17,'m',88.8); t5.show(); Stu t6=t5; t6.show(); Stu t7("kenn",28,'w',77.7); Stu t8; t8=t7; t7.show(); t8.show(); return 0; }
#include <iostream> #include <cstring> #include <iomanip> #include <stdio.h> using namespace std; class myString { char *str; int size; public: myString():str(new char[32]){cout << "myString无参构造"<<endl;} myString(char *str):str(new char[32]) { strcpy(this->str,str); this->size=strlen(); cout << this->str << endl; cout << "myString有参构造"<<endl; printf("%p\n",this->str); } myString(const myString &other):str(new char[32]) { strcpy(this->str,other.str); this->size = other.size; cout << "myString拷贝构造"<<endl; printf("%p\n",this->str); } myString &operator=(const myString &other) { if(&other!=this) { strcpy(this->str,other.str); this->size=other.size; cout << "myString拷贝赋值"<<endl; printf("%p\n",this->str); } return *this; } ~myString() { delete []str; str=nullptr; cout << "myString析构函数"<<endl; } void show() { cout << "str=" << str << " size=" << size << endl; } int empty() { string s1=str; return s1.empty(); } int strlen() { string s1=str; return s1.size(); } char &at(int pos) { string s1=str; return s1.at(pos); } }; int main() { myString p1; //p1.show(); char str[32]="hello nihao"; myString p2(str); p2.show(); myString p3=p2; p3.show(); myString p4; p4=p2; p4.show(); return 0; }
http://www.jsqmd.com/news/1161197/

相关文章:

  • 告别DLL错误:VisualCppRedist AIO如何一站式解决Windows软件兼容性问题
  • 终极指南:如何使用applera1n专业工具绕过iOS 15-16激活锁
  • DeviceKit源码架构深度解析:高性能iOS设备管理框架的技术实现
  • typedef与#define
  • 2026北京正规防水公司推荐名单:卫生间免砸砖、外墙、地下室、屋顶渗漏维修 本地服务商报价透明(7月最新防水资讯) - 防水企业百科
  • Godot游戏引擎中C#与.NET生态集成实战指南
  • 2026年粤港两地车牌办理全场景实用参考指南 - 招财兔数字员工
  • VoiceFixer终极指南:如何让任何受损语音重获新生
  • 2026指南:扬州代理记账服务公司的实力选择与财税伙伴推荐 - 品牌帮
  • 终极免费音频解放方案:3分钟解锁QQ音乐加密文件的跨平台播放自由
  • 告别顽固窗口!用WindowResizer强制调整任意窗口大小的终极指南
  • DeepSeek自研AI推理芯片:技术解析与市场影响分析
  • 2026找达人用哪个网站好:TikTok跨境电商达人对接平台大盘点、核心优势详解与选型避坑全指南 - U渠道
  • 收藏!2026年10个免费版权图片素材网站推荐,这些免费图片素材下载网站太香了!
  • 2026 TikTok跨境电商达人匹配平台测评:数据赋能下的精准合作解决方案分析 - U渠道
  • 2026年广场大型落地雕塑厂家选购指南与行业解析 - 曲阳嘉华园林
  • 中医资源合集(第二辑)
  • 【GitHub Copilot 真实生产力报告】:基于17,482名开发者行为数据的效能基准分析(附可复现测试脚本)
  • 微信ipad协议
  • Unity网络通信实战:构建模块化Socket组件解决粘包、心跳与异步处理
  • 界面控件DevExpress Blazor v26.1新版亮点 - AI Agent Skills
  • 2026办公室采购布丁果冻怎么选?雅客等口碑品牌盘点、选型标准解析、合规避坑全攻略 - 产业观察报
  • 卡地亚中国官方售后服务中心|官方网站权威认证(2026年7月最新) - 亨得利客户服务中心
  • (10-3)
  • (8-1)Bellman-Ford算法的局限性与改进
  • Cursor Electron应用内存泄漏诊断全链路:Chrome DevTools + Node Inspector + 自研Heap Snapshot分析法(仅限内部团队流出)
  • 为什么93%的Cursor Electron项目半年内废弃?资深工程师血泪总结的6个架构反模式
  • CircuitJS1 Desktop Mod:高效离线电路仿真软件深度指南与实用技巧
  • DDrawCompat终极指南:让经典DirectX游戏在现代Windows上焕发新生
  • 九江朋友聚餐去哪吃?2026火锅推荐清单,避坑选购攻略 - 品牌2026推荐