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

5118网站查询基于目的地的o2o旅游电子商务网站开发设计毕业设计

5118网站查询,基于目的地的o2o旅游电子商务网站开发设计毕业设计,oa办公软件手机版,ssc网站建设文章目录 拷贝构造函数的使用拷贝构造对于自定义类型【浅拷贝】深拷贝拷贝构造函数典型调用场景 拷贝构造函数的使用 在前几章学习对象的时候#xff0c;我们有的时候需要一个与已存在对象一某一样的新对象 那在创建对象时#xff0c;可否创建一个与已存在对象一某一样的新对… 文章目录 拷贝构造函数的使用拷贝构造对于自定义类型【浅拷贝】深拷贝拷贝构造函数典型调用场景 拷贝构造函数的使用 在前几章学习对象的时候我们有的时候需要一个与已存在对象一某一样的新对象 那在创建对象时可否创建一个与已存在对象一某一样的新对象呢 拷贝构造函数只有单个形参该形参是对本类类型对象的引用(一般常用const修饰)在用已存在的类类型对象创建新对象时由编译器自动调用。 拷贝构造函数也是特殊的成员函数其特征如下 拷贝构造函数是构造函数的一个重载形式。拷贝构造函数的参数只有一个且必须是类类型对象的引用使用传值方式编译器直接报错因为会引发无穷递归调用。 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;}//Date(const Date d) // 错误写法编译报错会引发无穷递归Date(const Date d) // 必须传引用{_year d._year;_month d._month;_day d._day;} private:int _year;int _month;int _day; }; int main() {Date d1(2024,2,1);Date d2(d1);return 0; }下面我们解释一下这里的const可加可不加但是建议加上有些人就写这个写昏头了写反了不加const的话不会提示 加上了就知道哪里错了所以还是加上较好 这里的拷贝构造必须传引用要不然会引发无穷递归【反正编译会报错~】 再看下面代码我是没有写拷贝构造的但是这里自动拷贝了毕竟这个是默认成员函数这里生成的还和之前几个的默认成员函数还不一样之前的对默认成员函数对内置类型不处理而这个拷贝构造对内置类型处理了如果没有处理这里就拷贝不出来说明这里会自动生成一个拷贝构造函数将值拷贝回去 若未显式定义编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝这种拷贝叫做浅拷贝或者值拷贝。 class Date { public:// 构造函数Date(int year 2024, int month 2, int day 1){_year year;_month month;_day day;}void Print(){cout _year / _month / _day endl;} private:int _year;int _month;int _day; }; int main() {Date d1(2024, 2, 1);Date d2(d1);d1.Print();d2.Print();return 0; }拷贝构造对于自定义类型【浅拷贝】 那么对于自定义类型呢 class Time { public:Time(const Time t){_hour t._hour;_minute t._minute;_second t._second;cout Time::Time(const Time) endl;} private:int _hour;int _minute;int _second; };class Date { public:Date(int year 2024, int month 2, int day 1){_year year;_month month;_day day;}void Print(){cout _year / _month / _day endl;} private:int _year;int _month;int _day;// 自定义类型Time _t; }; int main() {Date d1(2024,2,1);Date d2(d1);d1.Print();d2.Print();return 0; }我们有一个方法就是强制让编译器生成 加上这一条 Time() default;深拷贝 刚刚上面的一种场景叫做浅拷贝还有一个场景就是深拷贝 编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了还需要自己显式实现吗当然像日期类这样的类是没必要的。那么下面的类呢验证一下试试 下面我这个代码没有写拷贝构造它会自动生成一个默认的值拷贝我们来运行一下 typedef int DataType; class Stack { public:Stack(size_t capacity 10){_array (DataType*)malloc(capacity * sizeof(DataType));if (nullptr _array){perror(malloc申请空间失败);return;}_size 0;_capacity capacity;}void Push(const DataType data){// CheckCapacity();_array[_size] data;_size;}~Stack(){if (_array){free(_array);_array nullptr;_capacity 0;_size 0;}} private:DataType* _array;size_t _size;size_t _capacity; }; int main() {Stack s1;s1.Push(1);s1.Push(2);s1.Push(3);s1.Push(4);Stack s2(s1);return 0; }我们看到程序崩溃了~~ 也就是在一些场景下默认生成的拷贝构造是会出事的 再调试看一下 这会导致两个对象指向同一块空间 在结束的时候会调用析构函数会把那块空间给释放了 再次释放的时候会出现错误同一块空间被释放了两次【所以是绝对不能的】 正确的我们这样写需要引入一个叫做深拷贝 Stack(const Stack s) {// 深拷贝DataType* tmp (DataType*)malloc(s._capacity * sizeof(DataType));if (nullptr tmp){perror(malloc fail\n);exit(-1);}memcpy(tmp, s._array, sizeof(DataType) * s._size);_array tmp;// 浅拷贝_size s._size;_capacity s._capacity; }注意类中如果没有涉及资源申请时拷贝构造函数是否写都可以一旦涉及到资源申请时则拷贝构造函数是一定要写的否则就是浅拷贝 拷贝构造函数典型调用场景 使用已存在对象创建新对象函数参数类型为类类型对象函数返回值类型为类类型对象 class Date { public:Date(int year, int minute, int day){cout Date(int,int,int): this endl;}Date(const Date d){cout Date(const Date d): this endl;}~Date(){cout ~Date(): this endl;} private:int _year;int _month;int _day; }; Date Test(Date d) {Date temp(d);return temp; } int main() {Date d1(2022, 1, 13);Test(d1);return 0; }为了提高程序效率一般对象传参时尽量使用引用类型返回时根据实际场景能用引用尽量使用引用。 最后本文就到这里结束了感谢大家的收看请多多指点~
http://www.pierceye.com/news/7821/

相关文章:

  • 兖州市做网站企业网站优化培训
  • 闵行营销型网站建设消防做ccc去那个网站
  • 做网站一直不知道做什么网站如何开外贸网店
  • 河北省网站备案管理系统做理论的网站
  • 呼伦贝尔旅游网站建设wordpress中文图片插件下载
  • 2017年网站建设招标书企业信息查询系统官网贵州
  • 怎么样做国外推广网站国外对企业网站开发的研究
  • 自有电脑做网站服务器多用户商城系统开发哪家好
  • 网站开发程序介绍电子商务网站建设与规划案例
  • 网盘做网站服务器wordpress主题源文件
  • 网站制作教程步骤国内永久免费域名注册
  • 外贸网站推广营销wordpress角色内容
  • 建设部网站王尚春常用网站建设技术
  • 形容网站页面做的好的词语个人永久免费自助建站
  • 功能型网站建设时间wordpress自定义菜单插件
  • 济南网站建设报价电商网站的活动怎么做
  • 安庆集团网站建设沈阳做机床的公司网站
  • 接计设做的网站有关网站建设的毕业设计
  • wordpress主页显示不了长沙百度快速优化排名
  • 可以做书的网站魔域网页游戏官网
  • 舟山网站建设优化wordpress不能分类
  • 怎么调查建设网站企业注册信息查询单怎么打印
  • p2p网站建设费用什么是运营管理
  • 怎么做公司销售网站网络服务提供者应当将该声明转送发出通知的权利人
  • 胖咯科技网站建设建筑类电商网站
  • seo网站优化方案摘要如何用虚拟主机安装wordpress
  • 网站怎么快速做排名财务部官方网站经济建设司
  • 可以自己做课程的网站app平台开发需要的资源与团队
  • 惠州规划建设局网站网站建设招标评分
  • 企业网站优化三层含义公司大气聚财的名字