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

岳阳商城网站建设网站建设费 会计分录

岳阳商城网站建设,网站建设费 会计分录,咸阳网站建设xymokj,怎么做五合一网站目录 1. 拷贝构造函数的形参类型 关键要点: 2. 拷贝构造函数的调用次数分析 示例代码分析 运行结果与解析 调用次数原理 3. 减少拷贝构造次数的优化方法 优化策略 优化效果对比 总结 1. 拷贝构造函数的形参类型 关键要点: 必须使用引用类型 错…

目录

1. 拷贝构造函数的形参类型

关键要点:

2. 拷贝构造函数的调用次数分析

示例代码分析

运行结果与解析

调用次数原理

3. 减少拷贝构造次数的优化方法

优化策略

优化效果对比

总结


1. 拷贝构造函数的形参类型

关键要点:

  1. 必须使用引用类型
    错误形式:Int(Int it)
    会导致无限递归:当形参被赋值时,会再次触发拷贝构造函数调用。

  2. 正确形式:const引用
    Int(const Int &it)

    • 作用1:防止在拷贝过程中意外修改原对象

    • 作用2:允许接受常对象(const Int)作为参数,避免编译错误

示例说明:

class Int {
public:Int(const Int &it); // 正确写法
};

2. 拷贝构造函数的调用次数分析

示例代码分析

class Int
{
private:int value;
public:Int() :value() { cout << "Creat:" << value << " " << this << endl; }Int(int x) :value(x) { cout << "Creat:" << value << " " << this << endl; }~Int() { cout << "Destory:" << value << " " << this << endl; }void Print() const{cout << "value:" << value << endl;}void SetValue(int x){value = x;}Int(const Int& it){value = it.value;cout << "copy" << endl;}
};
Int func(Int c) {c.SetValue(100);return c;
}
int main() {Int a(10);   // 构造aInt b;       // 默认构造bb = func(a); // 调用func
}

运行结果与解析

Creat:10 0073FD0C       // 构造a
Creat:0 0073FD00        // 构造b
copy0073FC08            // 第一次拷贝:a→形参c
copy0073FC28            // 第二次拷贝:返回值→将亡值
Destory:100 0073FC08    // 析构形参c
Destory:100 0073FC28    // 析构将亡值
Destory:100 0073FD00    // 析构b
Destory:10 0073FD0C     // 析构a

调用次数原理

调用场景触发原因
第一次拷贝构造函数调用func(a)时,值传递形参c需通过拷贝构造从a创建
第二次拷贝构造函数返回时,需通过拷贝构造创建将亡值(临时对象),用于给b赋值

将亡值(expiring value):函数返回值时,若返回值类型非引用且大小超过寄存器容量,编译器会在主调函数栈帧中创建临时对象存储返回值。


3. 减少拷贝构造次数的优化方法

优化策略

  1. 函数形参使用引用传递
    将形参改为const Int &c,避免值传递时的拷贝构造调用。

    Int func(const Int &c) {  // 优化后Int tmp = c;          // 仅此处触发一次拷贝构造tmp.SetValue(100);return tmp;
    }

  2. 返回不具名对象(直接构造返回值)
    通过直接返回构造的临时对象,避免中间拷贝过程。

    Int Add(const Int &a, const Int &b) {return Int(a.value + b.value);  // 直接构造亡值,无额外拷贝
    }

优化效果对比

场景原调用次数优化后调用次数
调用func(a)2次0次(形参引用)
返回表达式直接构造对象1次0次(移动语义)

总结

  1. 拷贝构造函数的形参必须为const引用

    • 避免无限递归和常对象传递问题

  2. 拷贝构造触发场景

    • 值传递函数参数时

    • 返回非引用类型对象时

  3. 优化方法

    • 函数参数优先使用const &

    • 返回值时直接构造不具名对象,利用返回值优化(RVO)或移动语义(C++11+)

关键实践:在函数设计和返回值处理时,优先考虑引用传递和直接构造对象,可显著减少不必要的拷贝开销。

http://www.dtcms.com/wzjs/559947.html

相关文章:

  • 做运营的网站学习aspmvc网站开发 书
  • 企业网站建设策划书怎么写网站项目总体设计模板
  • wordpress网站排行专业的网站制作设计
  • 怎么做网站logowordpress登陆注册插件
  • 旅游营销型网站建设网站建设哪个便宜
  • php网站开发实用技术练习题网页设计最重要的是什么
  • 公司做网站还是做阿里好呢龙岗网站建设公司网络服务
  • 沧州网站建设微艾薇品牌专业群建设网站
  • win2008 iis 新建网站海口网站建设加王道下拉
  • 东莞南海网站制作百度产品优化排名软件
  • 西安网站优化招聘网推荐电商网站建设
  • 如何创建自己公司的网站交互式多媒体网站开发
  • 学校风采网站建设需求如何建立一个网站平台
  • 织梦网站修改使用教程把网站做静态化
  • 网站建设公司长春kuler 网站
  • 南京网页网站制作网件官网
  • 个人网站平台设计网站官网有哪些
  • 郑州网站优化旅游app界面设计
  • 互联网网站建设案例制作网站 服务器配置
  • 阿凡达做网站电话有限公司注册资金多少有什么区别
  • 网站开发回扣湖北正规网站建设质量保障
  • 重庆网站排名优化郑州哪家做网站最好
  • 网站提示代码建设个人网站可以卖产品吗
  • 免费做网站的好不好怎么做阿里国际网站的数据分析
  • 莆田网站建设优化石家庄设计网站公司
  • 网站建设数据库类型定制做网站技术
  • 外贸网站建设及优化ppt模块上海松江招聘网最新招聘
  • 专业网站制作网络公司常德网站建设全域云
  • 深圳网站设计设计h5小游戏源码大全
  • 贵州网站建设hsyunso济南建站免费模板