c++語言中允許宣告全域性變數,並且類成員的實現是在類的外部,因此經常會遇到作用域的問題。這裡簡單列出來平時遇到的一些問題。
一、類成員函式定義中的引數
乙個簡單的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
class
t
;
void
t::setvalue(num num)
其中,num是在類t中定義的型別,setvalue是類t的成員函式的定義(在類外部),因此setvalue一定是在類的作用域範圍內的,當然形參表也在類的作用域內。因此上面的用法是合法的。
二、成員函式的返回值1
2
3
4
5
6
7
8
9
10
11
12
13
class
t
;
num t::getvalue()
與形參型別相比,返回值的型別位於成員函式體的前邊,因此c++不認為num是在類的作用域內,如果對上面的**進行編譯,編譯器會報錯。正確的寫法是:
1
2
3
4
5
6
7
8
9
10
11
12
13
class
t
;
t::num t::getvalue()
from:
C C 中作用域
當變數在程式中的某個部分被宣告時,它只有在程式的一定區域才能被訪問。這個區域由識別符號的作用域 scope 決定。識別符號的作用域就是程式中該識別符號可以被使用的區域。例如,函式的區域性變數的作用域侷限於該函式的函式體。編譯器可以確認4種不同型別的作用域 檔案作用域 函式作用域 塊作用域和原型作用域...
類的作用域
更多c 類的基本概念 每個類都會定義它自己的作用域。在類的作用域外,普通的資料和函式成員只能由物件 引用或者指標使用成員訪問運算子來訪問。對於類型別成員則使用作用域運算子訪問。不論哪種情況,跟在運算子之後的名字都必須是對應類的成員。作用域和定義在類外部的成員 乙個類就是乙個作用域很好地解釋為什麼當我...
C C 中作用域詳解
c c 中作用域詳解 作用域規則告訴我們乙個變數的有效範圍,它在哪兒建立,在哪兒銷毀 也就是說超出了作用域 變數的有效作用域從它的定義點開始,到和定義變數之前最鄰近的開括號配對的第乙個閉括號。也就是說,作用域由變數所在的最近一對括號確定。1 全域性變數 全域性變數是在所有函式體的外部定義的,程式的所...