C++三种参数传递方法(值传递、指针传递、引用传递)的一些知识

来源:互联网 发布:java loader安卓 编辑:程序博客网 时间:2024/05/16 05:35

        C++的函数参数传递有三种方法:值传递、引用传递、指针传递 。其中引用传递和指针传递几乎一样,只不过引用传递在使用时比指针更安全。

       (1)关于函数返回一个对象

        当你的函数返回类型是【非引用】的类型时,return时先调用该类的拷贝构造函数生成函数内部那个临时对象的第二个临时副本,然后调用析构函数销毁原来的那个临时对象,外部调用函数的地方得到的返回对象就是第二个副本,函数调用完(包括调用处的返回对象作为源对象产生其它副本)之后第二个副本也会自动销毁,这整个(自动拷贝对象、两个对象的自动销毁)过程都是自动完成的。另外如果到return处才调用构造函数生成第一个临时对象的话那么编译器会将上述过程的2个对象优化为一个对象。

        如果一个对象太大,一般能返回指针或引用则尽量返回指针或引用,这样可以减少创建副本的开销。(但该返回对象时千万不要返回引用或指针)


        (2)指针与引用

         有时指针太危险,用引用可以避免。

        指针可以被delete掉,但引用就不能被delete了。往往指针的危险就是来自于delete。如果有两个指针同时指向一个内存地址,如果一个指针使用了delete操作,那么另一个指针在使用时就会出错了。

0 0