日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > VC++6.0之標準using namespace std

VC++6.0之標準using namespace std

來源:程序員人生   發布時間:2015-03-24 07:55:32 閱讀次數:3426次

       最近1直在看由電子工業大學出版的呂老師編寫的c《++語言程序設計(第3版)》,其中的程序代碼書寫我其實不知道有1定的缺點,我1直沉醉在他的書中,居然沒有再去看看其他的版本,原來新的C++已明確提出不提倡用的1些規定這本書還在用,也是我在最近的做題墮入了1定的窘境,很愁悶,后來在標準的習題中了解了1些編程代碼書寫規范。今天就好好學習1下標準的代碼書寫。

       先來看看舊版的C++編程風格(就是目前我學的這本書)

<font size="4"><span style="color:#ff0000;">#include <iostream.h>//舊版的C++頭文件包括命令 </span>class MyClass //定義的1個類 { public://類中的公有成員 MyClass(int i)//定義的帶1個參數的構造函數 { value = i; cout << "Constructor called." << endl; }//在類內的構造函數的函數體,調用1次將會輸出1次 int Max(int x, int y) { return x>y ? x : y; }//定義的重載函數是類的成員函數 int Max(int x, int y, int z) //類內定義的重載函數 { if (x > y) return x>z ? x : z; else return y>z ? y : z; } int GetValue() const { return value; }//定義的1般的成員函數 ~MyClass() { cout << "Destructor called." << endl; }//類內定義的析構函數,調用1次將輸出1次 private://類中的私有成員,只有成員函數才可以訪問 int value; }; <span style=""><span style="background-color: rgb(255, 255, 255);"><span style="color:#ff0000;">void main()//返回值類型為空的主函數</span> </span></span>{ MyClass obj(10);//定義的1個帶參數的對象,將使用構造函數對其進行初始化 cout<<"The value is "<<obj.GetValue()<< endl;//通過對象援用1般的成員函數 cout << "Max number is " << obj.Max(10,20) << endl;//通過對象援用重載函數 }</font>

        這類的編程風格也是我1直在使用的,原來存在局限性,也是將要被替換的,雖然說在VC++6.0中仍然可以運行,但是在其他的編程軟件中就不再適用了,例如VS2010等等。

       再來看看新的C++的編程的書寫:

<span style="color:#ff0000;">#include <iostream>//新版的C++頭文件包括命令</span> <span style="color:#ff0000;">using namespace std;</span> class MyClass //定義的1個類 { public://類中的公有成員 MyClass(int i)//定義的帶1個參數的構造函數 { value = i; cout << "Constructor called." << endl; }//在類內的構造函數的函數體,調用1次將會輸出1次 int Max(int x, int y) { return x>y ? x : y; }//定義的重載函數是類的成員函數 int Max(int x, int y, int z) //類內定義的重載函數 { if (x > y) return x>z ? x : z; else return y>z ? y : z; } int GetValue() const { return value; }//定義的1般的成員函數 ~MyClass() { cout << "Destructor called." << endl; }//類內定義的析構函數,調用1次將輸出1次 private://類中的私有成員,只有成員函數才可以訪問 int value; }; <span style="color:#ff0000;">int main()//返回值類型為整型的主函數 </span>{ MyClass obj(10);//定義的1個帶參數的對象,將使用構造函數對其進行初始化 cout<<"The value is "<<obj.GetValue()<< endl;//通過對象援用1般的成員函數 cout << "Max number is " << obj.Max(10,20) << endl;//通過對象援用重載函數 <span style="color:#ff0000;">return 0; </span>}

      原來這才是與時俱進的新C++編程代碼的規范書寫,那就來看看二者的區分:

      1.頭文件包括命令的不同,舊版的為#include <iostream.h>當使用<iostream.h>時,相當于在c中調用庫函數,使用的是全局命名空間,也就是初期的c++實現。而新C++的#include <iostream>當使用< iostream>的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

       #include <iostream.h>
       using namespace std; 則出錯
       所以 要末寫成
       #include <iostream >
       using namespace std;
       要末寫成
       #include <iostream.h>
       固然最好是前種

       2.主函數的返回值類型的不同,舊版的為void main(),而新C++為int main(),嚴格的還要在主函數的函數體最后1行加上return 0;要不然會出現正告錯,雖然不影響程序的運行,但是按良好的編程風格來講加上是最好的。

       二者的區分還有:

       1.舊的C++頭文件是官方所反對使用的(即,明確列出不再支持),但舊的C頭文件則沒有(以保持對C的兼容性)。舊的C++頭文件名如<iostream.h>將會繼續被支持,雖然它們不在官方標準中。這些頭文件的內容不在名字空間std中。新的C++頭文件如<iostream>包括的基本功能和對應的舊頭文件相同,但頭文件的內容在名字空間std中。(在標準化的進程中,庫中有些部份的細節被修改了,所以舊頭文件和新頭文件中的實體不1定完全對應。)

       2.所謂namespace,是指標識符的各種可見范圍。C++標準程序庫中的所有標識符都被定義于1個名為std的namespace中.

       由于namespace的概念,使用C++標準程序庫的任何標識符時,可以有3種選擇:

      (oct  8進制     dec  10進制     hex  106進制)

        (1)、直接指定標識符。例如std::ostream而不是ostream。完全語句以下:

        std::cout << std::hex << 3.4 << std::endl;

        (2)、使用using關鍵字。

        using std::cout;

        using std::endl;

        以上程序可以寫成

        cout << std::hex << 3.4 << endl;

        (3)、最方便的就是使用using namespace std;

        例如:

        #include <iostream>

        using namespace std;

        這樣命名空間std內定義的所有標識符都有效(暴光)。就好像它們被聲明為全局變量1樣。那末以上語句可以以下寫:cout << hex << 3.4 << endl;

        3.<iostream>和<iostream.h>是不1樣,前者沒有后綴,實際上,在你的編譯器include文件夾里面可以看到,2者是兩個文件,打開文件就會發現,里面的代碼是不1樣的。

        后綴為.h的頭文件c++標準已明確提出不支持了,早些的實現將標準庫功能定義在全局空間里,聲明在帶.h后綴的頭文件里,c++標準為了和C區分開,也為了正確使用命名空間,規定頭文件不使用后綴.h。

         因此,當使用<iostream.h>時,相當于在c中調用庫函數,使用的是全局命名空間,也就是初期的c++實現;當使用<iostream>的時候,該頭文件沒有定義全局命名空間,必須使用namespace std;這樣才能正確使用cout。

        4.在標準C++之前,都是用#include<iostream.h>這樣的寫法的,由于要包括進來的頭文件名就是iostream.h。標準C++引入了名字空間的概念,并把iostream等標準庫中的東東封裝到了std名字空間中,同時為了不與原來的頭文件混淆,規定標準C++使用1套新的頭文件,這套頭文件的文件名后不加.h擴大名,如iostream等等,并且把原來C標準庫的頭文件也重新命名,如原來的string.h就改成cstring(就是把.h去掉,前面加上字母c),所以頭文件包括的寫法也就變成了#include <iostream>。
         其實不是寫了#include<iostream>就必須用using namespace std;我們通常這樣的寫的緣由是為了1下子把std名字空間的東東全部暴露到全局域中(就像是直接包括了iostream.h這類沒著名字空間的頭文件1樣),使標準C++庫用起來與傳統的iostream.h1樣方便。如果不用using namespace std;使用標準庫時就得時時帶上名字空間的全名,如std::cout << "hello" << std::endl;為了方便的書寫,就加上了using namespace std。這樣可以更好的讀懂編寫的程序代碼。

 

 

       

   

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产一区二区成人在线 | 欧美gay网站 | 国产亚洲精品久久久久久牛牛 | 精品国产不卡一区二区三区 | 夜夜骑视频 | 爱爱免费观看 | 国产精品成人在线 | 亚洲二区视频 | www国产亚洲精品 | 精品国产一区二区三区日日嗨 | 毛片国产 | 在线国产福利 | 国产91精品久久久久久久网曝门 | 中文字幕成人网 | 欧美a∨一区二区三区久久黄 | 99精品视频免费在线观看 | 在线不卡一区 | 日韩精品一区在线视频 | 波多野结衣av在线播放 | 久久国产精品-国产精品 | 国产精品不卡一区 | 韩日成人 | 国产一区二区美女 | 日韩在线免费电影 | 国产天堂 | 精品视频久久久久久 | 最近中文字幕在线视频 | 成人av网站在线观看 | 精品视频在线观看一区二区三区 | 一区三区视频在线观看 | 黄色毛片免费 | 色又黄又爽网站www久久 | 一级毛片国产 | 成人免费视频网站 | 在线观看免费av网 | 精品av| 国产三区四区 | 国产一区导航 | 久久这里只有精品首页 | 日韩美女福利视频 | 天天操中文字幕 |