zoukankan      html  css  js  c++  java
  • C++中级-(构造函数,拷贝构造函数,析构函数)

    构造函数和析构函数

    #include <iostream>
    #include <string>
    using namespace std;
    //创建一个类,C++编译器会给类添加至少三个函数
    //默认构造函数;析构函数;拷贝构造函数,当自己创建这三个函数时就会抵消掉默认创建的函数了。
    /*
    构造函数:进行初始化,可以有参数和发生重载,创建对象自动调用。类似python__INIT__方法。
    析构函数:进行清理,不可以有参数和发生重载,对象销毁前自动调用一次。
    */
    
    class UserInfo
    {
    public:
        //1.构造函数
        UserInfo()
        {
            cout << "ready!
    ";
        };
    
        //2.析构函数
        ~UserInfo()
        {
            cout << "Finish 
    ";
        };
    
    
    
    };
    
    
    
    
    int main() {
        UserInfo u1;//实例化时自动调用构造函数
        return 0;
    }

    构造函数的分类和调用

    #include <iostream>
    #include <string>
    using namespace std;
    
    class UserInfo
    {
        public:
            int age;
            //无参构造
            UserInfo(){
                cout << "ready!" << endl;
            };
    
            //有参构造
            UserInfo(int a) {
                age = a ;/
                cout << "Has args" << endl;
            };
            //拷贝构造函数
            /*
            使用已经创建完毕的对象来初始化一个新对象
            当自己没写这函数的时候,并且实例化UserInfo u4(u3),系统会自动创建一个拷贝构造函数,并且内部实现的是浅拷贝。
            如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,自己进行堆区数据的释放。才能防止浅拷贝带来的问题。
            */
            UserInfo(const UserInfo &u1) {
                age = u1.age; //传入对象的所有属性拷贝到当前对象;浅拷贝;
                cout << "Copying func" << age << endl;
            };
    
            ~UserInfo() {
                cout << "Finish" << endl;
            };
    };
    
    //调用
    void test() {
        UserInfo u1;//无参构造调用
        UserInfo u2(10);//有参构造调用
        UserInfo u3(u2);//拷贝构造调用
        cout << "P2 age:" << u2.age << endl;
        cout << "P3 age:" << u3.age<<endl;
    };
    
    
    int main() { 
        test();
        return 0; 
    }
  • 相关阅读:
    Day22:异常处理、socke基于TCP协议编程
    Day21:面向对象的软件开发、反射、对象的内置方法
    Day20:绑定方法与非绑定办法、多态和多态性
    Day19:继承实现的原理、子类中调用父类的方法、封装
    Day18:类的抽象、类的组合应用
    Day17:类的继承、派生、组合和接口
    Day16:面向对象编程——类和对象
    数据结构
    python爬虫篇之 性能相关
    scrapy-redis
  • 原文地址:https://www.cnblogs.com/cou1d/p/14258882.html
Copyright © 2011-2022 走看看