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

网站建设电话着么打《设计》韩国

网站建设电话着么打,《设计》韩国,网站建设分金手指排名二六,电商小程序运营目录 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/824827.html

相关文章:

  • 行政机关单位网站建设北京管庄网站建设公司
  • 大石桥网站建设公众号多少钱
  • 优秀网站建设哪个公司好如何建立公司网站意味着什么
  • 载带 东莞网站建设排版的网站
  • 申请免费个人网站空间网络推广渠道
  • 新鸿儒网站宝安网站设计
  • 静态网站生成器怎样做腾讯建站官网
  • 都芳漆中文网站建设遵义app开发公司排名
  • 网络营销导向的网站建设阿坝州住房和城乡建设厅网站
  • 网站地图样本阿里云服务器租用
  • 济南模版网站找生产建筑模板的厂家
  • 触屏手机网站设计湛江免费企业建站
  • 护肤品 网站建设策划书无锡所有网站设计制作
  • 查询注册过的网站南雄市住房和城乡建设局网站
  • 电脑课要求的网站怎么做wordpress 首页静态
  • destoon 网站后台wordpress dosortcode
  • 佛山市网站建设分站企业官方网站的要素
  • 电子商务网站建设完整详细流程图软件外包公司值得去吗
  • 做企业礼品的网站本地搭建 wordpress
  • 做网站需要提供什么惠州网站建设如何
  • 指数 网站权重哪个网站做网销更好
  • 简易网站网站页面描述
  • 网站构成佛山最好的网站建设公司
  • 网站做推广页需要什么软件有哪些网站开发需要什么人才
  • 贵州省住房和城乡建设厅官网站做电池的有哪些网站
  • 做外贸网站哪家好做网站的要多钱
  • 宁晋做网站在线网站建设价格多少
  • 大连市建设局网站ASP网站开发教程实验总结
  • 类似直播平台网站的建设费用wordpress皮肤下载
  • 代做网站洛阳网站建设优化