1. 程式人生 > >C++中作用域限定符"::"

C++中作用域限定符"::"

在不同作用域內宣告的變數可以同名,但如果區域性變數和全域性變數同名,在區域性變數作用域內如何訪問全域性變數?C語言沒有提供同名情況下訪問全域性變數的方法。在C++中,可以通過使用作用域限定符(::)(scope resolution operator)來區別同名的全域性變數

    例2-27 在區域性變數作用域內利用作用域限定符訪問同名的全域性變數

Cpp程式碼
#include <iostream.h>  

int amount=123;                           //輸出全域性變數    

void main()  

{  

      int amout=456;                       //區域性變數  

      cout <<::amout << ' ,';           //輸出全域性變數  

      cout <<amout << ' ,';             //輸出區域性變數  

      ::amout=789;  

     cout <<::amout << ' ,';           //輸出全域性變數  

     cout <<amout << '\n';            //輸出區域性變數  

}

    #include <iostream.h>

   int amount=123;                           //輸出全域性變數

   void main()

   {

         int amout=456;                       //區域性變數

         cout <<::amout << ' ,';           //輸出全域性變數

         cout <<amout << ' ,';             //輸出區域性變數

         ::amout=789;

        cout <<::amout << ' ,';           //輸出全域性變數

        cout <<amout << '\n';            //輸出區域性變數

   }
  

   執行結果為:

   123,456,789,456

   注意:作用域限定符(::)只能用來訪問全域性變數,不能用於訪問一個在語句塊外宣告的同名區域性變數。下列程式碼是錯誤碼的。

void main()

{

int amount=123;

{

int amount=456;

::amout=789;

:
}

}

相關推薦

C++作用限定"::"

在不同作用域內宣告的變數可以同名,但如果區域性變數和全域性變數同名,在區域性變數作用域內如何訪問全域性變數?C語言沒有提供同名情況下訪問全域性變數的方法。在C++中,可以通過使用作用域限定符(::)(scope resolution operator)來區別同名的全域性變數     例2-27 在區域性變數

C/C++作用詳解(轉)

防止 局部作用域 gist 文件中 方式 為什麽不使用 形式參數 lan archive 作用域規則告訴我們一個變量的有效範圍,它在哪兒創建,在哪兒銷毀(也就是說超出了作用域)。變量的有效作用域從它的定義點開始,到和定義變量之前最鄰近的開括號配對的第一個閉括號。也就是說,作

C++的const限定(5)——const形參和實參

1、當形參有頂層const時,傳給它常量物件或非常量物件都是可以的,這一點複合之前所說的,因為形參的初始值是拷貝了實參的。 2、在定義過載函式時,需要注意:對於形參是否是const的,是無法被編譯器所區分的。 void foo(int i){} void foo(co

C++ 的 const 限定

 const 限定符 const int bufferSize = 1024; const int k; // ERROR! const 物件必須初始化, 且一旦建立後其值不能改變,因此只能在 const 物件上執行不改變其內容的操作。 預設情況下,const

作用限定(::)的用法

第一種,就是區分同名的全域性變數(或函式)和區域性變數(或函式)。 #include<iostream> usingnamespace std;   int sum=0;   constint N=15;   int main()   {       

C++ 作用及可見性

 作用域是用來表示某個識別符號在什麼範圍內有效,可見性是指識別符號是否可見,可引用。 1.作用域        作用域是這樣一個區域,識別符號在程式的這個區域內是有效的。C++的作用域主要有四種:函式原型作用域、塊作用域、類作用域和檔案作用域。        a.函式原

C++模板類的派生類訪問基類成員必須顯式呼叫(作用限定)

一個常見的派生類訪問基類成員變數的例子:template<int dim>class A{public:A():b(2){}int b;};template<int dim>class B:public A<dim>{public:   

C++類作用的問題,在類定義宣告常量與使用的問題

class Stock { private: std::string company; const int Month = 12; double costs[Month]; //報錯 long cost = Month; //正確 ... }; 上面是程式碼,

C++繼承和派生——派生類成員的標識與訪問(作用分辨和虛基類技術)

在派生類中,成員可以按訪問屬性劃分為以下四種: 不可訪問成員 準確說是不可以直接訪問。這種成員是從基類私有成員繼承而來,派生類或者派生類物件的模組都無法訪問這些成員,當然,派生類繼續派生的新類也是無法訪問它們的。 私有成員 這個可以是從

C++數字和字串的轉換

oat 不能 ring1 相關 輸出 displays tof spl 進制轉換 1、字符串數字之間的轉換(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->

Linux c括號作用【原創筆記】

地址 fine turn print key tdi def macro stdio.h 大師指點後,所做的筆記,很感謝一起願意研究技術的同事,以下不是本人原創,是他分析的成果#include <stdio.h> #include <time.h&g

C++的#和##運算

合並操作 col 否則 未定義 info merge eight 標識符 轉換 #和##運算符 #:構串操作符 構串操作符#只能修飾帶參數的宏的形參,它將實參的字符序列(而不是實參代表的值)轉換成字符串常量 #define STRING(x) #x#x#x #defin

C++cout輸出字型指針地址值的方法

ostream stream .net space http sys details 技術分享 -1 轉載:http://blog.csdn.net/u013467442/article/details/43666955 #include<iostream>

C#Split用法~字串分隔

rec get 字符 說明 logs sep bbs options tle 1、用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray=

c++賦值運算重載為什麽要用引用做返回值?

font round opera () const pub copy構造函數 per size class string{ public: string(const char *str=NULL); string(const string& str);

C#的除法運算與VB.NET的除法運算

字母 ant width eve png per -h ado.net 如果 VB.NET中的除法運算符有兩個:/(浮點除法)、\(整數除法) C#中的除法運算符只有一個:/(除法) VB.NET中的除法運算符與 C#中的除法運算符 存在很大的差異,使用時註

c++賦值運算的隱式轉換

字符串 {} new () 再看 null del delete ret 先上代碼: #include<iostream> #include<string> using namespace std; class MyStr { private:

C++ 重載運算 “<” 及 friend屬性

get 使用 重載 ret blog 無法 pri cdp turn 類中重載運算符不需要一定是成員函數,也可以聲明為友元函數。 class person { public: //作為類的成員函數,重載運算符參數只需要右操作值即可 bool opera

JS作用和變量提升(hoisting)的深入理解

text his 分享 裏的 can ava defined 部分 pub 作用域(Scoping) 對於Javascript初學者來說,一個最迷惑的地方就是作用域;事實上,不光是初學者。我就見過一些有經驗的javascript程序員,但他們對scope理解不

c語言 作用、存儲期、鏈接屬性匯總

初始 執行 不存在 分配 標識符 num 賦值 inline bss 1、作用域   塊作用域:用{}闊起來的,從聲明開始到“}” 結束 函數作用域:goto(標識符) 的作用域為整個函數。 函數原型作用域:函數聲明開始,函數聲明結束而結束