zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    CSS常见兼容性问题
    Ubuntu系统下创建python数据挖掘虚拟环境
    Django 模板中引用静态资源(js,css等)
    Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面
    Ubuntu14.04安装配置SVN及Trac
    禁止Chrome浏览器缓存的方法
    windows下安装配置Xampp
    Linux系统下用C语言获取MAC地址
    使用axios+formdata+vue上传图片遇到后台接受不到图片的值的问题
    使用vee-validate表单插件是如何设置中文提示?
  • 原文地址:https://www.cnblogs.com/whale90830/p/10536281.html
Copyright © 2011-2022 走看看