zoukankan      html  css  js  c++  java
  • c++ 对象指针参数和对象引用参数02

    对象指针作为函数参数和对象引用作为函数参数都比对象作为函数参数要用的更为普遍

    传对象指针和传对象引用作为实参,那么实参在函数里发生了变话,那么相应的对象本身也会发生变化,二传递对象本身作为实参的话,实参发生变化,对象本身不会发生变化,因为对象指针和对象引用传给函数的实际上是所指对象的地址,而对象本身作为实参传给函数的话,则是传递对象本身的副本,和原对象没有任何关系。实例代码如下:

    class test{
    public:
        test(int a,int b):x(a),y(b){}
    public:
        int x;
        int y;
    };
    //指针来定义形参
    void alterTest0(test *p)
    {
        p->x=100;
        p->y=100;
    }
    //引用来定义形参
    void alterTest1(test &p) { p.x=200; p.y=200; }
    //对象本身来定义形参
    void alterTest2(test p) { p.x=300; p.y=300; } int main(int argc, char* argv[]) { test t(10,10); cout<<"test t:"<<t.x<<" "<<t.y<<endl; alterTest2(t); cout<<"test t 对象本身做实参:"<<t.x<<" "<<t.y<<endl; alterTest0(&t); cout<<"test t 对象指针做实参:"<<t.x<<" "<<t.y<<endl; alterTest1(t); cout<<"test t 对象引用做实参:"<<t.x<<" "<<t.y<<endl; return 0; }

    运行结果如上图,对象本身作为实参不会改变原对象的值。

    注意:注意引用传参 在调用函数并且给实参的时候,只需要给对象就行,定义了 ,就会自动取其引用。alterTest2(t);

  • 相关阅读:
    poj1661【DP,左右两端dp】
    hdoj1074【A的无比爆炸】
    hdoj1024【DP.最 大 m 字 段 和】(写完我都怕。。。不忍直视。。)
    qq教xixi写模拟加法【非常爆炸】
    错排公式
    POJ3616【基础DP】
    hdoj1257【疑问】(贪心)
    【弱的C艹之路。。未完待续】
    hdoj1728【搜索的两种写法】
    hdoj1001【智障了。。。】
  • 原文地址:https://www.cnblogs.com/fengting/p/4439370.html
Copyright © 2011-2022 走看看