zoukankan      html  css  js  c++  java
  • 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模式下结果:第三种方式的

  • 相关阅读:
    Python简介
    名词术语 1
    TypeError: 'method' object is not subscriptable 一般是函数没加括号导致的
    MYSQL 使用命令行导入文本数据 csv数据
    日期函数格式化
    日期函数——第几天、第几周、星期几、第几季度
    日期函数——MYSQL
    集合常见面试题
    输入一个随机整数,输出对应的大写
    Oracle数据库基本sql语句
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10682698.html
Copyright © 2011-2022 走看看