• 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; 
    }
  • 相关阅读:
    高德地图周边搜索与搜索提示(三)
    jupyter notebook 添加目录
    Ubuntu 下简单完全卸载MySQL 以及便捷安装
    Ubuntu中安装MySQL,更改默认用户密码
    python-pip版本更新
    概率论与数理统计--->陈希孺---书籍链接下载
    机器学习实战-书籍链接下载
    Markdown安装/破解/下载
    Kaggle比赛入门比赛--Titanic-测试玩--
    python机器学习算法简介
  • 原文地址:https://www.cnblogs.com/cou1d/p/14258882.html
Copyright © 2020-2023  润新知