• C++_向函数传递对象


    向函数传递对象

    1. 使用对象作为函数参数

    对象可以作为参数传递给函数,其方法与传递其他类型的数据相同

    在向函数传递对象时,是通过传值调用传递给函数的。

    因此,函数中对对象的任何修改均不影响调用该函数的对象本身

    例3.11 使用对象作为函数参数。
    #include<iostream.h>
    class aClass{
    public:
        aClass(int n) { i=n; }
        void set(int n){ i=n; }
        int get( ){ return i; }
    private:
        int i;
    };
    void sqr(aClass ob)
    {
        ob.set(ob.get()*ob.get());
        cout<<"copy of obj has i value of ";
        cout<<ob.get()<<"
    ";
    }
    main()
    {
        aClass obj(10);
        sqr(obj);
        cout<<"But, obj.i is unchanged in main:";
        cout<<obj.get( ); return 0;
    }
    
    copy of obj bas i value of 100
    But, obj.i is unchanged in main∶10
    

    2. 使用对象指针作为函数参数

    对象指针可以作为函数的参数,使用对象指针作为函数参数可以实现传址调用,即可在被调用函数中改变调用函数的参数对象的值,实现函数之间的信息传递

    同时使用对象指针实参仅将对象的地址值传给形参,而不进行副本的拷贝,这样可以提高运行效率,减少时空开销

    当函数的形参是对象指针时,调用函数的对应实参应该是某个对象的地址值

    例3.12 使用对象指针作为函数参数
    #include<iostream.h>
    class aClass {
    public:
        aClass(int n) { i=n; }
        void set(int n){ i=n; }
        int get(){ return i;}
    private:
        int i;
    };
    void sqr(aClass *ob)
    {
        ob->set(ob->get() * ob->get());
        cout<<"Copy of obj has i value of ";
        cout<<ob->get()<<"
    ";
    }
    main()
    {
        aClass obj(10);
        sqr(&obj);
        cout<<"Now, obj.i in main() has been changed :";
        cout<<obj.get() <<"
    "; return 0;
    }
    

    3. 使用对象引用作为函数参数

    使用对象引用作为函数参数不但具有用对象指针作函数参数的优点,而且用对象引用作函数参数将更简单、更直接

    例3.13 使用对象引用作为函数参数
    #include<iostream.h>
    class aClass {
    public:
        aClass(int n) { i=n; }
        void set(int n) { i=n; }
        int get() { return i;}
    private:
        int i;
    };
    void sqr(aClass& ob)
    {
        ob.set(ob.get() * ob.get());
        cout<<"Copy of obj has i value of ";
        cout<<ob.get()<<"
    ";
    }
    main()
    {
        aClass obj(10);
        sqr(obj);
        cout<<"Now, obj.i in main() has been changed :";
        cout<<obj.get() <<"
    ";
        return 0;
    }
    
  • 相关阅读:
    自定义 radio 的样式,更改选中样式
    【Vue中的坑】vue项目中动态绑定src不显示图片解决方法
    js复制内容到剪切板
    js实现鼠标单击或者双击事件
    代码修改shader Properties uniform变量
    关于unity中BindChannels的理解
    shader Category
    Unity手游之路自动寻路Navmesh之高级主题
    Unity手游之路自动寻路Navmesh之入门
    Unity 自动寻路Navmesh之跳跃,攀爬,斜坡
  • 原文地址:https://www.cnblogs.com/whale90830/p/10536281.html
Copyright © 2020-2023  润新知