• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            MyMSDN

            MyMSDN記錄開發(fā)新知道

            C++ notes (2)

            11、枚舉

            //enum     
            enum HttpVerbs { Head, Post, Get, Delete };
               
            HttpVerbs current_verbs = Post;    
            std::cout<<"Current Verbs = "<<current_verbs<<std::endl;
                










            //error C2440: “=”: 無法從“int”轉(zhuǎn)換為“HttpVerbs”
                
            //current_verbs = 3;
                

            current_verbs = (HttpVerbs)2;    
            std::cout<<"Current Verbs = "<<current_verbs<<std::endl;
                
            HttpVerbs copy_verbs = current_verbs;    
            std::cout<<"Copy Verbs = "<<copy_verbs<<std::endl;
                
            HttpVerbs future_verbs = (HttpVerbs)((current_verbs + 1)%sizeof(HttpVerbs));    
            std::cout<<"Future Verbs = "<<future_verbs<<std::endl;
                
            std::cout<<"HttpVerbs Size![by sizeof(HttpVerbs)] = "<<sizeof(HttpVerbs)<<std::endl;

            輸出:

            Current Verbs = 1
            Current Verbs = 2
            Copy Verbs = 2
            Future Verbs = 3
            HttpVerbs Size![by sizeof(HttpVerbs)] = 4

            12、類,成員變量初始化

            定義變量和定義數(shù)據(jù)成員存在著非常重要的區(qū)別:一般不能把類成員的初始化作為其定義的一部分。當(dāng)定義數(shù)據(jù)成員時(shí),只能指定該數(shù)據(jù)成員的名字和類型。類不是在類定義里定義數(shù)據(jù)成員時(shí)初始化數(shù)據(jù)成員,而是通過成為構(gòu)造函數(shù)的特殊成員函數(shù)控制初始化。

            class MyClass1
            {
            public:
            int GetMyValue();
                 void SetMyValue(int value); private:
                 //error C2864: “MyClass1::myValue”: 只有靜態(tài)常量整型數(shù)據(jù)成員才可以在類中初始化
                 int myValue = 3; //只需修改為int myValue;即可 };

            13、struct關(guān)鍵字

            C++支持另一個(gè)關(guān)鍵字struct,它也可以定義類類型。struct關(guān)鍵字是從C語言中繼承過來的。

            如果使用class關(guān)鍵字來定義類,那么定義在第一個(gè)訪問標(biāo)號(hào)前的任何成員都隱式指定為private;如果使用struct關(guān)鍵字,那么這些成員都是public,除非有其他特殊的聲明,如添加了private才為private,否則都是public,因此沒必要添加public關(guān)鍵字。

            用class和struct關(guān)鍵字定義類的唯一差別在于默認(rèn)訪問級(jí)別:默認(rèn)情況下,struct的成員為public,而class的成員為private。

            14、預(yù)編譯頭文件

            一、什么是預(yù)編譯頭文件?
            預(yù)編譯頭文件物理上與通常的的.obj文件是一樣的,但編譯入預(yù)編譯頭的.h,.c,.cpp文件在整個(gè)編譯過程中,只編譯一次,如預(yù)編譯頭所涉及的部分不發(fā)生改變的話,在隨后的編譯過程中此部分不重新進(jìn)行編譯。進(jìn)而大大提高編譯速度,并便于對(duì)頭文件進(jìn)行管理,也有助于杜絕重復(fù)包含問題。

            VC++程序一般包含的頭文件都比較復(fù)雜,如果每次都逐行分析可能會(huì)花很多時(shí)間,所以VC++默認(rèn)設(shè)置是第一次編譯時(shí)分析所有頭文件,生成.pch文件,這個(gè)文件很大,但以后每次編譯時(shí)就可以節(jié)省很多時(shí)間。如果刪除了這個(gè)文件,下次編譯時(shí)VC++會(huì)自動(dòng)生成它。

            二、什么時(shí)候使用預(yù)編譯頭?
            當(dāng)大多.c或.cpp文件都需要相同的頭文件時(shí)。
            當(dāng)某些代碼被大量重復(fù)使用時(shí)。
            當(dāng)導(dǎo)入某些不同庫都有實(shí)現(xiàn)的函數(shù),并產(chǎn)生混亂時(shí)。

            15 、在頭文件中必須總是使用完全限定的標(biāo)準(zhǔn)庫名字。

            因?yàn)轭A(yù)處理器會(huì)將頭文件復(fù)制到使用它的任何地方,兩種可能,一種是如果在頭文件中使用using,會(huì)使相關(guān)代碼不論是否需要該using都必將放置一個(gè)using,另一種是,假設(shè)有另一個(gè)庫可能也包含了相應(yīng)的方法如有方法std::cout以及my::cout,如果使用了using,有可能導(dǎo)致被引入的程序偏離原本的使用意圖,或者導(dǎo)致編譯錯(cuò)誤。

            16、字符串字面值和標(biāo)準(zhǔn)庫string不是同一種類型

            因?yàn)闅v史原因以及為了與C語言兼容,字符串字面值與標(biāo)準(zhǔn)庫string類型不是同一種類型。這一點(diǎn)很容易引起混亂,編程時(shí)一定要注意區(qū)分字符串字面值和string數(shù)據(jù)類型的使用,這很重要。

            17、getline函數(shù)輸入的時(shí)候丟棄末尾的換行符,并將整行返回,而且不丟棄第一個(gè)換行符,也就是即便你一開始就輸入了換行符,它仍然會(huì)返回,只不過返回的是一個(gè)空字符串而已。

            編寫程序?qū)崿F(xiàn)從標(biāo)準(zhǔn)輸入每次讀取一行文本。然后改寫程序,每次讀入一個(gè)單詞!

            //std::cout<<"getline:<<std::endl;
            WriteLine("getLine");
            WriteLine("P72 編);
            using std::string;
            
            WriteLine("每(輸"NEXT\"進(jìn)");
            string str;
            while(std::getline(std::cin, str))
            {
                if(str == "NEXT")
                    break;
                std::cout<<str<<std::endl;
            }
            
            WriteLine("每輸"NEXT\"進(jìn)");
            while(std::getline(std::cin, str))
            {
                if(str == "NEXT")
                    break;
                //從第0個(gè)開始查找空白
            static const std::basic_string<char>::size_type npos = (std::basic_string<char>::size_type)-1; std::basic_string<char>::size_type firstIndexOfEmpty = str.find_first_of(" ", 0); if(firstIndexOfEmpty != npos) std::cout<<str.substr(0, firstIndexOfEmpty)<<std::endl; else std::cout<<str<<endl; }

            其中WriteLine函數(shù):

            void WriteLine(std::string str)
            {
                std::cout<<str<<std::endl;
            }

            18、std::string對(duì)象的加法

            如果一串字符串和string對(duì)象混合相加,則要求+操作符左右操作數(shù)必須至少有一個(gè)是string類型的。

            推論:一串字符串和string對(duì)象混合相加,前兩個(gè)操作數(shù)中至少有一個(gè)是string對(duì)象。

            std::string str2 = str1 + "this" + " that" + " those";
            std::cout << str2 << std::endl;
            //error C2110: “+”: 不能添加兩個(gè)指針
            std::string str3 = "this" + " that" + str1 + " those"; std::cout << str3 << std::endl;

            19、C標(biāo)準(zhǔn)庫頭文件和C++版本

            C++標(biāo)準(zhǔn)庫也包括C標(biāo)準(zhǔn)庫,命名上則在C標(biāo)準(zhǔn)庫的名字前加一個(gè)c并省去后綴.h,比如C標(biāo)準(zhǔn)庫中的ctype.h,在C++中就有相應(yīng)的標(biāo)準(zhǔn)庫cctype(注意沒有.h)。C++和C標(biāo)準(zhǔn)庫文件的內(nèi)容是一樣的,只是采用了更適合C++的形式。而且通常cname頭文件中定義的名字都定義在命名空間std內(nèi),而.h版本的名字卻不是這樣。

            20、關(guān)于中文編碼的相關(guān)問題

            我們知道大部分的編譯器以及解決方案都由外國(guó)人發(fā)明創(chuàng)造,特別是美國(guó)人。因此很多程序默認(rèn)不支持中文。雖然隨著Unicode的普及這部分問題得到了很大的改善(比如C#就可以完美地支持中文),但是類似C++這樣的語言,仍然面臨著中文編碼的問題。關(guān)于編碼,有一篇值得推薦的文章:地址1備用地址下載后打印(docx,50.7KB)查找更多

            posted on 2008-12-20 15:50 volnet 閱讀(1768) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++ Primer 學(xué)習(xí)筆記

            特殊功能
             
            99国产欧美精品久久久蜜芽| 久久久久国产视频电影| 久久综合久久美利坚合众国| 久久久久综合网久久| 久久综合九色综合97_久久久| 久久人人爽人人人人爽AV| 久久综合久久久| 国产麻豆精品久久一二三| 伊人久久大香线焦AV综合影院 | 中文字幕久久精品| 国产精品99久久不卡| 久久99精品久久久久久hb无码| 久久久这里有精品| 久久夜色精品国产亚洲av| 国产精品成人精品久久久| 久久精品国产亚洲综合色| 久久男人Av资源网站无码软件| 久久综合偷偷噜噜噜色| 久久久久久国产精品美女| 亚洲中文字幕伊人久久无码| 久久久久国色AV免费观看| 久久精品国产精品亚洲人人| 亚洲国产成人精品91久久久| 久久精品国产日本波多野结衣| 日本欧美国产精品第一页久久| 精品久久久久久无码人妻热| 久久性精品| 99久久无色码中文字幕| 亚洲国产精品综合久久一线| 欧美一区二区三区久久综| 国产成人无码精品久久久免费 | 久久综合狠狠综合久久激情 | 久久精品国产亚洲5555| 国产麻豆精品久久一二三| 三级片免费观看久久| 91久久精品国产91性色也| 中文字幕久久精品无码| 亚洲国产成人久久综合碰碰动漫3d| 人人狠狠综合久久亚洲高清| 久久超碰97人人做人人爱| 久久国语露脸国产精品电影|