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
    执行析构函数删除对像

  • 相关阅读:
    基于keepalived搭建MySQL的高可用集群
    weblogic启动问题
    wind7下搭建ftp服务器
    数据库连接数使用情况监控
    windows下自动删除n天前的文件
    oracle RAC调整数据文件大小并移动表到指定的表空间
    oracle表空间使用情况查询
    vue的.vue文件是怎么run起来的(vue-loader)
    react router @4 和 vue路由 详解(七)react路由守卫
    react router @4 和 vue路由 详解(六)vue怎么通过路由传参?
  • 原文地址:https://www.cnblogs.com/plan/p/2352064.html
Copyright © 2011-2022 走看看