日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

参数传递模式

發布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 参数传递模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

T為一個類名.

1.void f(T x) ?按值傳遞

:調用函數時,產生一個x的副本,函數中修改x副本的值不會修改x的值;

優點:安全,可以防止參數X在函數中不小心被修改

缺點:1.調用f函數時,因為要產生一個副本,所有要調用T類的構造函數。

2.f函數結束時,又要調用T類的析構函數

若T類是一個大型類會非常耗時,降低效率。

3.若有時對象不允許被復制(有時復制對象操作僅限于特權用戶或被禁止【此處可能是把復制對象的函數放在private中聲明】)

?

2.void f(const T x) 按值傳遞

有上面一個的所有優缺點

特別之處:因為x被聲明為const對象所以x的副本在f函數中不能被修改.

?

3.void f(T& x) 按引用傳遞

優點:可以直接對x進行寫入和讀取

缺點:若x在函數中被銷毀,函數外有存有x地址的變量,在調用x時,會導致程序崩潰.

(在多線程環境中,這種方式是十分危險的)

?

4.void f(const T& x) ?按引用傳遞

優點和3例一樣。

特別之處:此方法x只能被讀取,不能被修改.(在傳遞大型對象是,此傳遞方法強烈推薦)

?

5.void f(T* x) 按指針傳遞

在調用函數時,產生一個指向x的指針(4字節大小,幾乎可以忽略不計).

優點:可以直接修改x.

缺點:若在函數中銷毀x,會產生主函數的指針懸掛.

特別注意:若函數中的x改變所指對象,不會改變函數外x所指的內容.

?

指針有空指針(即NULL或0)

所以最好 void f(T* x=0)

提醒即使把空指針傳遞給函數也不會有問題

?

?

6.void f(const T* x)?按指針傳遞

優點只能對x進行讀取.

?

7.void f(T* const x)

可以對x進行讀取和寫入,但是不能移動指針。

?

8.void f(const T*const x)

?

轉載于:https://www.cnblogs.com/zhengzhe/p/6485703.html

總結

以上是生活随笔為你收集整理的参数传递模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。