【day0405 C++】重載與作用域 (隱藏或屏蔽)

# 重載:返回值類型和函數名相同,參數類型或個數不同的若干個函數。

void add(int a, int b)
{
    cout << a+b << endl;
}

void add(double a, double b)
{
    cout << a+b << endl;
}

# 屏蔽(隱藏):如:一個變量的名與函數名形同

Demo1

void add()
{ 
    //...
}

int main()
{ 
    int add = 9; 
    add(); //此時編譯會報錯,因爲add()已經被變量屏蔽(隱藏)了
    return 0;
}


</pre><pre>

Demo2:

void print(string str);
void print(int a);   //重載

void main()
{
    //這裏會發生函數隱藏,而不是重載
    void print(double b);  //這是一個局部函數的聲明
    print(3);  //錯誤,現在只能看到double類型的print函數了
    print("Hello");  //也是錯的
    print(3.14);  //對的
}

注意:局部聲明函數是一種不明智的方法,函數聲明一般放在頭文件。

# 每一個版本的函數重載都應該在同一個作用域中聲明。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章