C++笔记:类和对象(二)

对象和引用

        

代码演示:

#include<iostream>
using namespace std;class A {
public :A() = default;A(const A&) = default;
private :};class B {
public :B(A &a) : a(a) {}
private :A &a;
};class C {
public :C()  = default;C(const C &) = default;static void destroy(C *c) {delete c; return ;}
private :~C() {}
};int main() {A a;B b(a);C *c = new C();C::destroy(c);return 0;
}

返回值优化

先回顾一下一个对象是如何进行创建的:

如下代码:

#include<iostream>
using namespace std;class A {
public :A() {cout << this << " default constructor" << endl;}A(const A &) {cout << this << " copy constructor" << endl;}string s;
};A func() {//这里创建temp调用了默认构造A temp;cout << "temp = " << &temp << endl;temp.s = "hello func";//return这里会有一个匿名对象//然后temp会通过拷贝构造拷贝给这个匿名对象return temp;
}int main() {//然后这里的a通过拷贝构造,拷贝这个匿名对象//那么创建a对象最终会调用//一次默认构造,两次拷贝构造对吧A a = func();cout << "a = " << &a << endl;return 0;
}

执行结果:

会发现结果只调用了一次默认构造,也就是在调用func函数时创建temp进行调用的默认构造,这就就是编译器进行了返回值优化,可以看到对象a的地址和对象的temp的地址一摸一样都没变,说明中间的这些拷贝过程就是浪费资源。

那么我在编译时关闭了,返回值优化,再看结果

和我对于代码的分析是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/630615.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析Apache Hadoop YARN:工作原理与核心组件

什么是YARN&#xff1f; YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个重要组件&#xff0c;用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性&#xff0c;取代了旧版本中的JobTracker和TaskTracker。YARN的设计目…

VUE 弹框内容懒加载-真实项目

背景&#xff1a;VUE 页面&#xff0c;点击按钮&#xff0c;弹框&#xff0c;内容从接口获取&#xff0c;数据量比较大&#xff0c;鼠标滑到页面最底部&#xff0c;调取一次接口&#xff0c;分批加载&#xff1b; demo&#xff1a; <template><div><!-- 触发弹…

如何部署npm私有仓库以及在项目中如何使用

如何部署npm私有仓库以及在项目中如何使用 为什么要部署npm私有仓库&#xff1f; 安全性&#xff1a;私有仓库允许团队存放内部研发的、不宜公开发布的代码包&#xff0c;只对特定用户或者团队可见和可用&#xff0c;从而保护公司的知识产权和商业秘密。模块的复用性&#xf…

HTML5+JavaScript实现本地视频/音频播放器

HTML5JavaScript实现本地视频/音频播放器 HTML5 提供了本地视频和音频播放器的支持&#xff0c;通过 <video> 和 <audio> 标签&#xff0c;这些标签支持多种媒体格式&#xff0c;并且可以通过 JavaScript 进行控制&#xff0c;实现功能比较完整的本地视频音频播放器…

Jenkins机器已经安装了ansible, 运行的时候却报错ansible: command not found

操作系统&#xff1a;MacOS Jenkins log提示 ansible: command not found 直接在Jenkins 机器中&#xff0c;进入一样的目录执行ansible --version OK 原因&#xff1a; Jenkins 默认使用的环境是 /usr/bin, 而我的ansible 安装配置在conda3 下面&#xff0c;所以需要在Jenkin…

Hive进阶

目录 一、MapReduce的计算过程 二、Yarn的资源调度 yarn的资源调度策略 三、Hive的语法树 四、Hive配置优化 五、数据开发 六、数据仓库 七、数据仓库开发流程 八、数仓分层 九、ETL和ELT 一、MapReduce的计算过程 分布式计算框架 需要编写代码执行&#xff0c;执行时…

云原生Kubernetes: K8S 1.29版本 部署Kuboard

目录 一、实验 1.环境 2.K8S 1.29版本 部署Kuboard (第一种方式) 3.K8S 1.29版本 部署Kuboard (第二种方式) 4.K8S 1.29版本 使用Kuboard 二、问题 1.docker如何在node节点间移动镜像 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注ma…

浅写个登录(无js文件)

全部代码如下&#xff0c;无需编写wxss文件&#xff0c;渲染都在style里面&#xff1a; <view style"height: 250rpx;width: 100%;"> <!-- 背景图片 --><view style"position: absolute; background-color: antiquewhite; height: 250rpx;width…

文件内容操作

文件内容操作 一:字节流1.1:InputStream1.1:构造方法:1.1.2:read()方法:1.1.3:关闭文件:close 1.2:OutputStream1.2.1:write() 二:字符流2.1:Reader2.2:Writer 一:字节流 字节流:以字节为单位读写数据. 常用的类主要有:InputStream,OutputStream 核心操作: (1)通过构造方法,打…

Tensorflow小技巧01:检测本地Tensorflow的版本

前言&#xff1a; 以Pycharm为例&#xff0c;Windwos10系统&#xff0c;检测本地环境的Tensorflow的版本&#xff1a; 1 打开Pycharm窗口 2 在窗口中输入&#xff1a; pythonPython 3.9.5 (tags/v3.9.5:0a7dcbd, May 3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)] on win…

实测52.4MB/s!全志T3+FPGA的CSI通信案例分享!

CSI总线介绍与优势 CSI&#xff08;CMOS sensor parallel interfaces&#xff09;总线是一种用于连接图像传感器和处理器的并行通信接口&#xff0c;应用于工业自动化、能源电力、智慧医疗等领域&#xff0c;CSI总线接口示意图如下所示&#xff08;以全志科技T3处理器的CSI0为…

怎么设置启用远程桌面? 如何让外网电脑远程本地内网?

如何远程控制电脑&#xff1f;最简单实用的方案是开启电脑系统自带的远程桌面功能&#xff0c;如果涉及跨网、内外网互通&#xff0c;可以同时用快解析内网映射外网。下面是方案的具体实施步骤&#xff0c;供大家参考。 怎么打开设置启用远程桌面&#xff1f; 1.在目标需要远…