zoukankan      html  css  js  c++  java
  • 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
    执行析构函数删除对像

  • 相关阅读:
    Netty之ProtoBuf(六)
    Netty对WebSocket的支持(五)
    Netty之心跳检测技术(四)
    Netty之多用户的聊天室(三)
    Docker Compose 笔记
    vue.js学习笔记
    powerdesigner 生成C#code 实体 模板设备
    .net 接收post 的参数 加载xml
    powerdesigner 生成实体代码 附加生成xml
    PostgreSql 获取所有的表、视图、字段、 主键
  • 原文地址:https://www.cnblogs.com/plan/p/2352064.html
Copyright © 2011-2022 走看看