• C++使用引用来传递对像 畅想由我


    实例1:

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    A(){cout<<"执行构造函数创建一个对像\n";}
    A(A&){cout<<"执行复制构造函数创建对像的副本\n";}
    ~A(){cout<<"执行析构函数删除对像\n";}
    void set(int i){x=i;}
    int get()const{return x;}
    private:
    int x;
    };
    //用const定义一个不能修改的指针并返回one值
    A& func(A & one)
    {
    return one;
    }
    int main()
    {
    A a;
    a.set(123);
    A &p=func(a);
    //p->set(111);这样给值是错误的,一定要在声明a对像时用a.set时给值
    cout<<p.get()<<endl;
    
    return 0;
    
    }
    

    结果:

    执行构造函数创建一个对像
    123
    执行析构函数删除对像


    实例2:

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    A(){cout<<"执行构造函数创建一个对像\n";}
    A(A&){cout<<"执行复制构造函数创建对像的副本\n";}
    ~A(){cout<<"执行析构函数删除对像\n";}
    void set(int i){x=i;}
    int get()const{return x;}
    private:
    int x;
    };
    //用const定义一个不能修改的指针并返回one值
    A& func(A & one)
    {
    return one;
    }
    int main()
    {
    A a;
    a.set(123);
    A &p=func(a);
    //p->set(111);这样给值是错误的,一定要在声明a对像时用a.set时给值
    cout<<p.get()<<endl;
    p.set(567);
    cout<<p.get()<<endl;
    return 0;
    
    }
    

    结果:

    执行构造函数创建一个对像
    123
    567
    执行析构函数删除对像

    实例3:

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    A(){cout<<"执行构造函数创建一个对像\n";}
    A(A&){cout<<"执行复制构造函数创建对像的副本\n";}
    ~A(){cout<<"执行析构函数删除对像\n";}
    void set(int i){x=i;}
    int get()const{return x;}
    private:
    int x;
    };
    //用const定义一个不能修改的指针并返回one值
    A& func(A & one)
    {
    return one;
    }
    int main()
    {
    A a;
    a.set(123);
    A const &p=func(a);
    //p->set(111);这样给值是错误的,一定要在声明a对像时用a.set时给值
    cout<<p.get()<<endl;
    //p.set(567);
    cout<<p.get()<<endl;
    return 0;
    
    }
    

    执行构造函数创建一个对像

    123
    123
    执行析构函数删除对像

    实例4: 修改后结果和实例3一样。

    #include <iostream>
    using namespace std;
    class A
    {
    public:
    A(){cout<<"执行构造函数创建一个对像\n";}
    A(A&){cout<<"执行复制构造函数创建对像的副本\n";}
    ~A(){cout<<"执行析构函数删除对像\n";}
    void set(int i){x=i;}
    int get()const{return x;}
    private:
    int x;
    };
    //用const定义一个不能修改的指针并返回one值
    const A& func(A & one)
    {
    return one;
    }
    int main()
    {
    A a;
    a.set(123);
    A const &p=func(a);
    //p->set(111);这样给值是错误的,一定要在声明a对像时用a.set时给值
    cout<<p.get()<<endl;
    //p.set(567);
    cout<<p.get()<<endl;
    return 0;
    
    }
    

      

    结果:
    执行构造函数创建一个对像
    123
    123
    执行析构函数删除对像

  • 相关阅读:
    java 实现串口通信
    下载 Microsoft .NET Framework 4和4.5.2(独立安装程序)
    vm15.5.1安装Mac os X
    开源网盘系统
    Photoshop另存为图片为.ico格式(图标文件)的插件
    VeraCrypt(文件加密工具)创建和加载“文件型加密卷”的步骤
    强制浏览器字体为宋体或其他指定的字体
    超微主板风扇模式
    通过URL获取该页面内的所有超链接
    photoshop新建时提示“无法完成请求,因为暂存盘已满”的解决方案
  • 原文地址:https://www.cnblogs.com/plan/p/2352064.html
Copyright © 2020-2023  润新知