14-Qt中为什么函数可以直接返回QString对象而不是QString*(指针),复制构造函数的作用

本文探讨了在Qt中函数返回QImage/QString对象而非指针的原因,主要涉及C++的拷贝构造函数。尽管直接返回对象会调用拷贝构造函数,但Qt的隐式数据共享机制使得这种方式既安全又高效,避免了不必要的内存复制。在定义对象列表时,选择List还是List取决于需求,两者在内存使用和访问速度上的差异不大,但List无需考虑拷贝构造函数问题。
摘要由CSDN通过智能技术生成

Qt中为什么函数可以直接返回QImage/QString对象,而不是QImage* QString*(指针)

副标题:C++编程中使用List<Object*>还是List<Object>呢 ?

注:本文涉及到的主要知识点为:C++的拷贝构造函数的作用

一、在C++中返回参数的基础知识

在C++中,函数返回类型有,基本数据类型,结构体,对象,指针。下面举例几个正确使用C++中函数返回值的使用方法:

  1. 返回c++基本类型
    int max(int a, int b) {
    return a > b ? a : b;
    }
  2. 返回指针:返回的指针所指的对象必须是用new生成的。
    优点:返回指针,加快了参数传递速度
    缺点:new需要花费不少时间
    优点:在单实例模式需要使用这个方式
    Apple *GetAnApple() {
    Apple *apple*= new Apple();
    return apple;
    }
  3. 返回对象:直接返回对象,在return的时候会调用类的拷贝构造函数,给返回值赋值,然后函数内的局部变量就会被销毁。
    缺点:1.返回前还要调用类的拷贝构造函数新建并复制全部成员变量。计算压力增大。
    缺点:2.在类的成员变量中包含静态成员或指针成员的时候需要自己实现拷贝函数,默认的拷贝构造函数会导致错误;参考:
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值