1. 程式人生 > >大學C++課堂知識點(第四期之作用域運算子、強制型別轉換)

大學C++課堂知識點(第四期之作用域運算子、強制型別轉換)

哈哈哈,終於想起來我的CDSN的密碼了(才不是為這些天沒更新找藉口,╭(╯^╰)╮)

一、作用域運算子     ::

就是後面那兩個冒號哈,對的,沒錯,就叫做作用域運算子。

這倆個冒號就厲害嘞,他可以把區域性變數變成全域性變數。

咳咳~,官方解釋就是:如果有兩個同名變數,一個是全域性的,另一個是區域性的,那麼區域性變數在作用域內具有較高的優先權,它將遮蔽全域性變數。

話不多說,上例子:

全域性變數和區域性變數同名:


#include <iostream>
using namespace std;
int avar=10;  //全域性變數
int main ()
{
    int avar;  //區域性變數
    avar=25;
    cout<<"avar is "<<avar<<endl;
    return 0;
}

在VC中輸出結果如下:

avar is 25
Press any key to continue

由此可見,是main函式裡面的區域性變數的值輸出了。所以區域性變數的優先順序大於全域性變數。

那麼,我要使用作用域運算子,該如何用呢?

我們來看下面的例子:

#include<iostream>
using namespace std;
int avar;
int main()
{
    int avar;
    avar=11;
    ::avar=10;
    cout<<"區域性變數是"<<avar<<endl;
    cout<<"全域性變數是"<<::avar<<endl;
	return 0;
}

VC執行結果是:

區域性變數是11
全域性變數是10
Press any key to continue

、強制型別轉換

就是資料型別之間的轉換。

在C中,一般是這個樣子的:

int i=10;
double x=(doble)i;

C++ 作為擴充,當然支援C中的表達方式啦,不過C++ 中,又多了一個形式:

C++中相比C,就把位置換了一下,看起來像函式呼叫那麼回事:

int 1=10;
double x=double(i);

不過,在C ++ 中,推薦後者哦!

好了,C++ 的基礎部分終於碼完了,接下來的一期就是開始進入有C++ 風格的程式碼了。