c++入门篇七

拷贝构造函数的调用时机:

class  Person {
public:
    //构造函数
    Person() {
        //无参构造函数
    }
    Person(int  a) {
        //有参构造函数
        cout << "有参构造函数" << endl;
    }
    Person(const  Person  &p) {
        //拷贝构造函数,前面必须加const,拷贝过来的不能再修改了,固定的,就是说你拷贝过来了张三,不能再修改成张四(p.name=""),只能是原版张三
        //传过来的&p是对象,p就是指针
        age = p.age;//age被赋值
        cout << "拷贝构造函数" << endl;
    }
    ~Person()
    {
        cout << "析构函数" << endl;
    }
    int  age;
};

第一种:使用已经创建好的对象来初始化新的对象

void  test01() {
    //拷贝构造函数的几种方式
    //第一种方式:直接赋值拷贝对象
    Person  p1;
    p1.age = 33;//已经创建好了对象
    Person p2 = p1;//相当于拷贝了p1给p2
    fun(p2);

第二种方式:值传递的方式拷贝

//第二种方式:值传递的方式拷贝
void  fun(Person &p1) {//相当于Person  p=Person(p2),拷贝构造函数,建议使用引用,节省一份新的开销,不用新的内存空间
    cout << "fun函数:" << p1.age << endl;

}
void  test01() {
    Person  p1;
    p1.age = 33;//已经创建好了对象
    Person p2 = p1;//相当于拷贝了p1给p2
    fun(p2);//传递p2给fun函数

第三种方式:以值方式返回局部对象

//第三种:以值方式返回局部对象int xxx(){},Person  xxx(){},结构体或者是函数的话,都可以不去加()
Person  fun1() {
    Person  p;
    p.age = 3333;
    return  p;
}
    //第三种方式:
    Person  p3 = fun1();

release模式下会做优化,debug模式下没有做优化

release模式下结果:第三种方式的

原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10682698.html

时间: 2024-08-30 10:27:46

c++入门篇七的相关文章

【SSRS】入门篇(七) -- 报表发布

完成[SSRS]入门篇(六) -- 分组和总计后,第一份简单的报表就已完成了,下面把报表发布到报表服务器上. (实际情况下,报表展示给用户未必是用报表服务器,而嵌入到原来的系统,如OA.CRM.ERP中,以链接形式打开.) 配置.启动报表服务: 1.打开Reporting Services 配置管理器: 2.服务器选择本机: 3.启动报表服务器: 4.设置Web服务URL,报表的URL地址是http://SOMEONE:80/ReportServer: (URL地址的格式是 http://你的电

lintcode入门篇七

211. 字符串置换 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换. 置换的意思是,通过改变顺序可以使得两个字符串相等. 样例 Example 1: Input: "abcd", "bcad" Output: True Example 2: Input: "aac", "abc" Output: False class Solution: """ @param A:

一个App完成入门篇(七)- 完成发现页面

第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事件 将要学习的demo效果图如下所示 1. 导入完整项目 本节示例demo请参考下载地址,可以导入到设计器中学习. 这节教程中将要用到的组件有do_BarcodeView请大家前几节教程所教授的方法,提前添加这两个组件,并打成相应调试包用于调试. 2. do_WebView组件do_WebView是

【Android的从零单排开发日记】之入门篇(七)——Android数据存储(上)

在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也是开发平台必须提供的基础功能.不光是在Android平台上,在其他的平台上,数据的存储永远是不可缺少的一块.Android的数据存储是构建在Linux的文件系统上,它充分利用Linux的账号系统来限定应用对数据的访问,部署了一套安全和灵活并重的数据存储解决方案.Android的文件框架,以及各种数据

CoreCLR源码探索(七) JIT的h5牛牛源码出售工作原理(入门篇)

很多C#的初学h5牛牛源码出售Q1446595067官网:h5.haozibbs.com者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framework, .Net Core, Mono)会把这些IL代码编译成目标机器的机器代码并执行. 相信大多数的C#的书籍都是这样一笔带过的. 这篇和下篇文章会深入讲解JIT的具体工作流程, 和前面的GC篇一样, 实现中的很多细节都是

hacker入门篇——相关书籍

1.<黑客大曝光:网络安全机密与解决方案(第7版)> 简介:这是一本老外写的书,比较适合入门看,内容包括一些基本的攻防流程,基本工具软件,网络安全的一些基本概念等,对整个网络安全和黑客入侵都有比较全面的介绍.对Windows和Unix系统做了分别得介绍,新版(第7版)还对现今新兴技术无线网.移动设备等方面的安全知识做了介绍.虽然关于具体细节的介绍比较少,但通过这本书可以让初学小白们对黑客有一个全面完整的认识.推荐作为第一本读物阅读. PDF: 第六版:http://pan.baidu.com/

Struts学习傻瓜式入门篇

或许有人觉得struts不容易学,似乎里面的一些概念让未接触过的人迷惑,MVC1.MVC2.模式……我写这篇文章是想让从来没有接触过struts的人,能有个简单的入门指引,当然,系统地学习struts是必要的,里面有很多让人心醉的东东,那是后话了. 该案例包括首页,用户登陆.网站向导页面.就这么简单,没有深奥的struts概念,主要靠动手,然后用心体会. WEB Server用tomcat4.到http://jakarta.apache.org下载struts1.1,把zip文 件释放到c:\s

Linux及Arm-Linux程序开发笔记(零基础入门篇)

Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer/archive/2011/05/05/2037449.html 目录 一.Arm-Linux程序开发平台简要介绍... 3 1.1程序开发所需系统及开发语言... 3 1.2系统平台搭建方式... 4 二.Linux开发平台搭建... 5 2.1安装虚拟工作站... 5 2.2安装Linux虚拟

从零开始学习jQuery (一) 开天辟地入门篇

原文:从零开始学习jQuery (一) 开天辟地入门篇 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQuer