多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > VC++6.0之標(biāo)準(zhǔn)using namespace std

VC++6.0之標(biāo)準(zhǔn)using namespace std

來源:程序員人生   發(fā)布時間:2015-03-24 07:55:32 閱讀次數(shù):3420次

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

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

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

        這類的編程風(fēng)格也是我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個參數(shù)的構(gòu)造函數(shù) { value = i; cout << "Constructor called." << endl; }//在類內(nèi)的構(gòu)造函數(shù)的函數(shù)體,調(diào)用1次將會輸出1次 int Max(int x, int y) { return x>y ? x : y; }//定義的重載函數(shù)是類的成員函數(shù) int Max(int x, int y, int z) //類內(nèi)定義的重載函數(shù) { if (x > y) return x>z ? x : z; else return y>z ? y : z; } int GetValue() const { return value; }//定義的1般的成員函數(shù) ~MyClass() { cout << "Destructor called." << endl; }//類內(nèi)定義的析構(gòu)函數(shù),調(diào)用1次將輸出1次 private://類中的私有成員,只有成員函數(shù)才可以訪問 int value; }; <span style="color:#ff0000;">int main()//返回值類型為整型的主函數(shù) </span>{ MyClass obj(10);//定義的1個帶參數(shù)的對象,將使用構(gòu)造函數(shù)對其進行初始化 cout<<"The value is "<<obj.GetValue()<< endl;//通過對象援用1般的成員函數(shù) cout << "Max number is " << obj.Max(10,20) << endl;//通過對象援用重載函數(shù) <span style="color:#ff0000;">return 0; </span>}

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

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

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

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

       二者的區(qū)分還有:

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

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

       由于namespace的概念,使用C++標(biāo)準(zhǔn)程序庫的任何標(biāo)識符時,可以有3種選擇:

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

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

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

        (2)、使用using關(guān)鍵字。

        using std::cout;

        using std::endl;

        以上程序可以寫成

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

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

        例如:

        #include <iostream>

        using namespace std;

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

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

        后綴為.h的頭文件c++標(biāo)準(zhǔn)已明確提出不支持了,早些的實現(xiàn)將標(biāo)準(zhǔn)庫功能定義在全局空間里,聲明在帶.h后綴的頭文件里,c++標(biāo)準(zhǔn)為了和C區(qū)分開,也為了正確使用命名空間,規(guī)定頭文件不使用后綴.h。

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

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

 

 

       

   

 

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: a级片在线免费看 | 国产免费高清在线精品一区 | 日韩欧美一区二区中文字幕 | 图片区亚洲色图 | 一级黄色欧美 | 一本大道卡一卡二卡三视频 | 黄大片日本一级在线a | 国产做出在线 | 传媒麻豆 | 国产一国产一区秋霞在线观看 | 成人国产一区二区三区精品 | 波多野结衣免费在线视频 | 国产69精品久久久久999三级 | 日本大胆一区免费视频 | 日韩欧美国产精品 | 欧美日韩欧美 | 欧美日本在线播放 | 日韩欧美亚洲国产精品字幕久久久 | 国产手机在线看片 | 国产成人高清亚洲一区91 | 日本japanese18日本护士xxxx | 69毛片 | 宅男看片午夜大片啪啪mv | 亚洲第一永久在线观看 | 色永久| 久久国产精品永久免费网站 | 午夜久久久久久久 | 日本一区二区三区欧美在线观看 | 国产精品视频福利 | 国产精品视频久久久久 | 亚洲精品久久久久午夜三 | 中文字幕26页 | 国产成人综合久久精品红 | 欧美日本道免费一区二区三区 | 亚洲在线视频免费 | 亚洲精品中文字幕乱码三区 | 国产成人久久精品激情91 | 欧美在线观看视频一区 | 日韩黄色a级片 | 午夜影院私人 | 亚洲视频天堂 | 国产精品国产三级国产专不∫ |