定義函式宣告誤區和函式相互呼叫導致的問題

2022-02-14 10:04:10 字數 806 閱讀 2651

我們編寫程式時一般有個習慣,寫函式都愛把函式寫到主函式的前面,

一般常用的寫法:

#includeusing namespace std;

void a()

void b()

int main()

執行結果:

現在看著很正常是吧?執行結果也對,我們一般定義函式都習慣這樣寫,以為這樣就不用宣告函式啦。

那麼現在我們看下這個程式修改後這個原始碼是不是還可以這樣?而不用宣告呢?

#includeusing namespace std;

void a()

void b()

int main()

此程式未宣告前會報錯,原因沒有宣告。

看到上面沒?出現了報錯,這時候就必須要對函式進行宣告了。

宣告修改後正確的原始碼為:

#includeusing namespace std;

void a();

void b();

void a()

void b()

int main()

注意,此程式雖然修改後能正確執行但是由於在函式a中呼叫函式b,函式b中呼叫函式a,會導致無窮迴圈。

這個也要注意編寫程式中盡量避免函式的相互呼叫出現混亂。

C 類中非虛函式和虛函式相互呼叫

記住下面的原則 1 當乙個物件呼叫乙個非虛函式時,與物件的宣告型別繫結的,並不是與實際的物件的型別繫結的。2 在虛函式中呼叫非虛函式的時候,呼叫的非虛函式是與虛函式所在的類是一致的 3 在非虛函式中呼叫虛函式的時候,呼叫的虛函式是與對像的實際類一致的。4 非虛函式與虛函式的呼叫與其訪問許可權無關。分...

c 中建構函式的相互呼叫

在建構函式中呼叫另乙個建構函式如果一不注意就會有無限遞迴的危險,而且建構函式的引數的不同也決定了呼叫的不同,所以特意總結了一下哪些形式的呼叫時允許的 首先假設構造函式呼叫時引數都是外部的變數,而不是乙個常量。說明 推薦此法 int b 2 class test 在初始化列表呼叫test int a ...

vue元件內函式相互呼叫問題

vue在同乙個元件內 methods中的乙個方法呼叫methods中的另外乙個方法 可以直接這樣呼叫 functiona 這樣是沒有考慮this作用域的問題的情況,如果你呼叫的functionb 函式不包含對vue事例中中對data資料的修改和呼叫 準確說沒有呼叫vue的例項物件的東西 這樣呼叫無可...