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

  • 相关阅读:
    Ros与Vrep平台搭建
    场景采集难点
    写给师弟师妹论文排版秘籍
    采集项目笔记2
    采集项目记录1
    NLP&Python笔记——nltk模块基础操作
    Hash算法(含python实现)
    Python学习笔记——Socket通信
    Python学习笔记——GIF倒放处理
    OSError: [WinError 126] 找不到指定的模块 —— 解决办法
  • 原文地址:https://www.cnblogs.com/plan/p/2352064.html
Copyright © 2011-2022 走看看