1樓:匿名使用者
你用引用的理解是正確的,對引用的操作實際上是對原變數的操作。另外專一種不叫變數本身屬,應該說成是按值傳遞,比如為什麼要用引用?大多數時候使用引用是為了拿到返回值,就如果上面的函式,一個函式的返回只能有一個值的,那萬一你的函式要返回很多值怎麼辦?
那就可以使用引用了。
2樓:匿名使用者
一般不想改變一個變數的值 在變數前加上const引用可以改變變數的值,若不想在內部改變進行值傳遞。
引用的好處是不產生臨時物件。
對於值傳遞和引用 具體情況具體分析了 。
一下子想不起例來
3樓:匿名使用者
這只是c++標準給你提供多種可能性而已,應當基於任務需要去選擇。
傳值,傳指標,
或傳引用
不要鑽牛角尖就行。
4樓:__mr牛
引用和指標差不多, 作為函式引數是可以雙向傳遞資料的, 比如你要在將一個變數內作為形參來傳遞容到函式內改變他的值 最終這個形參也要改變的話, 就必須要用引用, 因為如果用一般的引數, 引數的值是不會被改變的。。
c++裡一個函式裡定義一個變數加&與不加&的區別
5樓:這麼個人
如果是形參的話bai,就是按值du傳遞和按引用傳遞的
區別。zhi按引用dao傳遞的引數,在被調函式版中改變的權話,實參本身也會改變。
如果是在函式體內定義的話,引用與變數的區別就是引用是一個變數的別名,對引用操作就是對它繫結的變數操作,用起來沒有區別。就是在定義的時候,變數可以不初始化,引用就必須初始化繫結一個變數。還有一點,像引數傳遞引用,如果引數是比較大的符合型別,引用的效率高,因為傳遞引用不會拷貝。
6樓:匿名使用者
函式外部定義的變數才是全域性變數。
c++中虛擬函式的作用是什麼?它應該怎麼用呢?
7樓:莫斯利安純牛奶
c++中虛擬函式的作用:
1、簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛擬函式。
2、實現多型性,多型性是將介面與實現進行分離。
3、當基類指標指向一個子類物件,通過這個指標呼叫子類和基類同名成員函式的時候,基類宣告為虛擬函式就會調子類的這個函式,不宣告就會呼叫基類的。
c++中虛擬函式的用法:
1、比如你有個遊戲,遊戲裡有個虛基類叫「怪物」,有純虛擬函式 「攻擊」。
2、派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了自己不同的「攻擊」函式,比如狼是咬人,蜘蛛是吐絲,蟒蛇把你纏起來。
擴充套件資料:
使用虛擬函式的注意事項:
1、包含虛擬函式的類指標列表會增大。
2、虛解構函式
(1)解構函式的作用是在物件撤銷之前做必要的「清理現場」的工作。
(2)當派生類的物件從記憶體中撤銷的時候,會先先呼叫派生類的解構函式然後再呼叫基類的解構函式。
(3)當我們new一個臨時物件時,若基類中包含解構函式,並且定義了一個指向該基類的指標變數。
3、建構函式不能宣告為虛擬函式
建構函式不能宣告為虛擬函式。如果宣告為虛擬函式,編譯器會自動報出。
4、不在析構或者構造過程中呼叫虛擬函式
在解構函式或者是建構函式中,我們絕對不能呼叫虛擬函式。即使,我們在建構函式或者解構函式中呼叫虛擬函式,也不會下降至派生類中呼叫函式。
8樓:木子青耶
虛擬函式的作用:
允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。
虛擬函式的使用方法是:
1.在基類用virtual宣告成員函式為虛擬函式可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。
在類外定義虛擬函式時,不必再加virtual。
2.在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛擬函式相同,並根據派生類的需要重新定義函式體。
在派生類重新宣告該虛擬函式時,可以加virtual,也可以不加,但習慣上一般在每一層宣告該函式時都加virtual,使程式更加清晰。
3.如果在派生類中沒有對基類的虛擬函式重新定義,則派生類簡單地繼承其直接基類的虛擬函式。
4.定義一個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。
通過該指標變數呼叫此虛擬函式,此時呼叫的就是指標變數指向的物件的同名函式;
虛擬函式與指向基類物件的指標變數的配合使用,就能方便地呼叫同一類族中不同類的同名函式,只要先用基類指標指向即可。
9樓:匿名使用者
c++中虛擬函式的作用:
1、為了方便使用多型特性,我們常常需要在基類中定義虛擬函式。
2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛擬函式的概念,將函式定義為純虛擬函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多型性。
同時含有純虛擬函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。
c++中虛擬函式的用法:
比如你有個遊戲,遊戲裡有個虛基類叫「怪物」,有純虛擬函式 「攻擊」。然後派生出了三個子類「狼」「蜘蛛」「蟒蛇」,都實現了自己不同的「攻擊」函式,比如狼是咬人,蜘蛛是吐絲,蟒蛇把你纏起來。
然後出現好多怪物的時候就可以定義一個 虛基類指標陣列,把各種怪物的指標給它,然後迭代迴圈的時候直接 monster[i]->attack() 攻擊玩家就行了,大概見下圖:
10樓:匿名使用者
c++中虛擬函式的作用:
1、方便使用多型特性。
2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為一個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛擬函式的概念,將函式定義為純虛擬函式(方法:virtual returntype function()= 0;),則編譯器要求在派生類中必須予以重寫以實現多型性。同時含有純虛擬函式的類稱為抽象類,它不能生成物件。
這樣就很好地解決了上述兩個問題。
宣告瞭純虛擬函式的類是一個抽象類。所以,使用者不能建立類的例項,只能建立它的派生類的例項。
純虛擬函式最顯著的特徵是:它們必須在繼承類中重新宣告函式(不要後面的=0,否則該派生類也不能例項化),而且它們在抽象類中往往沒有定義。
定義純虛擬函式的目的在於,使派生類僅僅只是繼承函式的介面。
3、純虛擬函式的意義,讓所有的類物件(主要是派生類物件)都可以執行純虛擬函式的動作,但類無法為純虛擬函式提供一個合理的預設實現。所以類純虛擬函式的宣告就是在告訴子類的設計者,「你必須提供一個純虛擬函式的實現,但我不知道你會怎樣實現它」。
虛擬函式的使用方法是:
1、在基類用virtual宣告成員函式為虛擬函式。這樣就可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛擬函式時,不必再加virtual。
2、在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛擬函式相同,並根據派生類的需要重新定義函式體。
c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此在派生類重新宣告該虛擬函式時,可以加virtual,也可以不加,但習慣上一般在每一層宣告該函式時都加virtual,使程式更加清晰。如果在派生類中沒有對基類的虛擬函式重新定義,則派生類簡單地繼承其直接基類的虛擬函式。
3、定義一個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。
4、通過該指標變數呼叫此虛擬函式,此時呼叫的就是指標變數指向的物件的同名函式。通過虛擬函式與指向基類物件的指標變數的配合使用,就能方便地呼叫同一類族中不同類的同名函式,只要先用基類指標指向即可。
如果指標不斷地指向同一類族中不同類的物件,就能不斷地呼叫這些物件中的同名函式。這就如同前面說的,不斷地告訴計程車司機要去的目的地,然後司機把你送到你要去的地方。
matlab自定義函式輸入引數有的是整數變數有的
1 變數就是a,然後bai在函式中判du斷a是一個數zhi,還是一個陣列。num length a 然後dao看num的大小,如版果是陣列,必然大於1,否則權 就等於1。2 matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發 資料視覺化 資料分析以及數值計算的高階技術計算語言...
c語言中關於陣列名作為函式引數方面的問題
不知道你說的第2,4,5語句對應的是什麼。幫你解釋為什麼是1 當你呼叫fun a,b,s 傳進的引數實際上是 a 0 b 0 s變數的值 實際上也就是 a 0 現在我們把fun的形參換個名字 fun int p1,int p2,int p3 進入fun時 p3 s 即p3 a 0 你呼叫malloc...
C建構函式的引數是陣列的話要怎麼寫
public student string name,string age,string float score 建構函式 student student swy3 new student 張三 20 男 new float 請問c 這個建構函式是怎麼傳參的 例如你的主窗體中有一個按鈕,在他的單擊事...