尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

c++ 的拷贝构造函数

c++ 的拷贝构造函数
📅 发布时间:2026/6/20 6:03:52
当类成员变量有指针类型的时候,要自定义拷贝函数,不要使用默认的拷贝构造函数.因为默认的拷贝构造构造函数是浅拷贝是位拷贝的,只拷贝指针指向的空间而没有把空间里的内容一起拷贝过来,这样会导致改变其中的一个,另一个也会跟着一起改变(老婆也都一样的了)class Teacher

{
public:
Teacher(); // 自定义的无参构造函数
Teacher(string n, double a, string ad, char* work); // 自定义的无参构造函数
Teacher(const Teacher & other); //声明拷贝构造函数 other可不写; 必须要const 和引用&
void eat();
void sleep();
void setname(); //设置人名
void getname() const;
void setwork(char* work);
private:
char work; //指针
Teacher::Teacher():name("abd"), age(36), adrr("湖南省长沙市") //自定义无参构造函数初始化变量
{
work = new char[WORK_LEN]; //分配内存空间
strcpy_s(this->work,WORK_LEN,"山江");
}
Teacher::Teacher(string n, double a, string ad, char
work) : name(n), age(a), adrr(ad) //带参数的构造函数
{
work = new char[WORK_LEN]; //分配内存空间

if (work)
{strcpy_s(this->work, WORK_LEN, work);
}
else
{strcpy_s(this->work, WORK_LEN, "山江");
}

}

Teacher::Teacher(const Teacher& other):name(other.name),age(other.age),
adrr(other.adrr) //拷贝构造函数的实现
{
work = new char[WORK_LEN]; //重新分配空间关键()
strcpy_s(work, WORK_LEN, other.work); //other.work 形参

}
void Teacher::setwork(char * work) //设置工作
{
if (!work) //如果为空
{
return;
}
strcpy_s(this->work, WORK_LEN, work);
}
int main(void)
{

Teacher ls1;    //定义了一个老师1 ,此时的直接调用你自定义无参构造函数初始化变量
Teacher ls4 (ls1);	                 //这个时候会调用拷贝构造函数
cout << "没有做深拷贝ls1\n";
ls1.getname();
ls4.getname();cout << "做深拷贝ls1\n";
ls1.setwork((char*)"麻冲");
ls1.setname();
ls1.getname();
ls4.getname();
system("pause");     //控制台暂停
return 0;

}
ls1.setwork((char*)"麻冲"); 即使工作改了,ls2的工作也不会改变,因为已经做做了深拷贝处理

相关新闻

  • 【笔记】类欧几里得算法
  • AQS的一些思考
  • 2 模型评估与选择

最新新闻

  • 别被忽悠了!2026实测靠谱的AI论文工具|实测必入避坑版
  • BLEURT、xCOMET与KIWI-23:多语言机器翻译评估指标深度对比与实战选型
  • 嵌入式GUI开发实战:emWin下拉列表与编辑框控件深度解析
  • Android JSONObject解析原理与工程化防护实践
  • 3步掌握终极Windows窗口调整方案:WindowResizer高效工作指南
  • 构建可视化可追溯性框架:从数据血缘到交互审计的完整实践

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号