zoukankan      html  css  js  c++  java
  • 构造和析构

     

    class Person
    {
        Person() //构造
        {
        }                    //可以重载和有参
    
        ~Person() //析构
        {
        }
    }

    构造函数

    与类名相同,不用写void 

    分类

    参数分类:无参构造函数 有参构造函数

    类型分类:普通构造函数 拷贝构造函数

    #include <iostream>
    using namespace std;
    
    class Person
    {
    public:
        Person()        //无参
        {}
        Person(int a)    //有参
        {}
        Person(const Person& p)    //拷贝
        {
            age = p.age;
        }
    
    private:
        int age;
    }
    
    void test01()
    {
        //构造函数调用方式: 1括号法
        Person p1(1);
        p1.age = 10
        Person p2(p1);         //拷贝p1
        cout << p2.age << endl;
    
        // Person p3(); //编译器会认为这行是函数的声明
        Person p3; //默认构造函数不要加()
    
        //构造函数调用方式: 2.显示法
        Person p4 = Person(100);    //右值为匿名对象, 匿名对象特定,如果编译器发现对象是匿名的,那么在这行代码结束后就释放这个对象
        Person p5 = Person(p4);
        //不能用拷贝构造函数 初始化匿名对象
        Person(p5);  //如果这么写 相当于 Person p5;
        //隐式类型转换
        Person p6 = 100; //相当于 Person p6 = Person(100)
        Person p7 = p6; //相当于 Person p7 = Person(p6)
    }
    
    int main()
    {
    
    }

     拷贝构造函数调用时机

    1.用已经创建好的对象来初始化新对象

    void test01()
    {
        Person p1;
        p1.age = 10;
        
        Person p2(p1); //p1是创建好的对象
    }

    2.以值传递的方式给函数参数传值

    void doWork(Person p1)      //Person p1 = Person(p)
    {
    
    }
    
    void test02()
    {
        Person p;
        p.age = 10;
    
        doWork(p); 
    }

    3.以值方式返回局部对象

    Person doWork2()
    {
        Person p1;
        return p1;              //复制一个新的数据返回
    }
    void test03()
    {
        Person p = doWork2();   
    }

    Debug结果:

    Release结果:

    析构函数

    类名前加~, 不可以重载,不可以有参数

  • 相关阅读:
    mysqllimit优化
    PLSQL Developer设置及快捷键设置
    Oracle建库、建表空间,建用户
    oracle分页语句
    oracle110个常用函数
    用二进制进行权限管理
    Tomcat6优化
    Silverlight 动态创建Xaml
    使用asp.net 2.0中的SqlBulkCopy类批量复制数据
    Jquery 插件开发
  • 原文地址:https://www.cnblogs.com/yifengs/p/15162862.html
Copyright © 2011-2022 走看看