青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MyMSDN

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

C++ notes (1)

1、標識符命名規(guī)則!

標識符不能包含兩個連續(xù)的下劃線,也不能以下劃線開頭后面緊跟一個大寫字母。有些標識符(在函數(shù)外定義的標識符)不能以下劃線開頭。

但是在G++編譯器和VC編譯器下,二者均可正確編譯!

Eclipse&G++Visual studio 2008

2、跨平臺編譯程序!

這里不是要講解如何跨平臺編譯程序,也不是告訴你如何更好地編寫通用平臺的程序規(guī)則,那可能涉及到很多的宏定義以及硬件相關特性。這里僅為使用示例代碼提供一種精簡的方式。

用Eclipse+MinGW的方式默認會很精簡,所以把它當作一種目標!

用Visual Studio 2008創(chuàng)建的程序會讓你引入預編譯頭stdafx.h(這通常發(fā)生在使用Visual Studio創(chuàng)建Win32控制臺應用程序,并直接點擊“完成”后),這將導致你無法將在Eclipse上編寫的程序直接運行在Visual Studio上。這時你應該通過修改項目屬性來獲得這種精簡的方式:(選擇項目,右鍵屬性,選擇配置屬性->C/C++->預編譯頭->創(chuàng)建/使用預編譯頭,選擇“不使用預編譯頭”->“確定”后再次編譯即可?。?/p>

properties

3、變量命名習題

//測試變量命名!
//error C2632: “int”后面的“double”非法
//int double = 3.14159;
//-------------------------------------------------
char _='a';
std::cout<<_<<std::endl;
//-------------------------------------------------
//warning C4091: “”: 沒有聲明變量時忽略“bool”的左側(cè)
//error C2059: 語法錯誤: “-”
//bool catch-22;
//-------------------------------------------------
//error C2059: 語法錯誤: “數(shù)字上的錯誤后綴”
//char 1_or_2 = '1';
//-------------------------------------------------
float Float=3.14f;
std::cout<<Float<<std::endl;

4、在C++中,“初始化不是賦值”

初始化指創(chuàng)建變量并給它賦初始值,而賦值則是擦除對象的當前值并用新值代替。

int ival(1024); //直接初始化
int ival = 1024; //復制初始化

直接初始化語法更靈活,效率更高!

對內(nèi)置類型來說,復制初始化和直接初始化幾乎沒有差別。

對類類型來說,有些初始化僅能用直接初始化完成。要想理解其中緣由,需要初步了解類是如何控制初始化的。

例如:

也可以通過一個計數(shù)器和一個字符初始化string對象。這樣創(chuàng)建的對象包含重復多次的指定字符,重復次數(shù)由計數(shù)器指定:

std::string all_nines(10, ‘9’); //all_nines = “9999999999”;

本例中,初始化all_nines的唯一方法是直接初始化。有多個初始化式時不能使用復制初始化。(V注:這里的初始化式即為構(gòu)造函數(shù)的多個重載;這里所謂的“不能使用”應該是“功能有所不及”的意思!)

5、變量初始化規(guī)則

使用未初始化的變量經(jīng)常導致錯誤,而且十分隱蔽。問題出在未初始化的變量事實上都有一個值。編譯器把該變量放到內(nèi)存中的某個位置,而把這個位置的無論哪種位模式都當成是變量初始的狀態(tài)。當被解釋成整型值時,任何位模式都是合法的值——雖然這個值不可能是程序員想要的。因為這個值合法,所以使用它也不可能導致程序崩潰??赡艿慕Y(jié)果是導致程序錯誤執(zhí)行和/或錯誤計算。

//在Eclipse中運行沒有出現(xiàn)錯誤!
//在Visual Studio中運行出現(xiàn)運行時錯誤!
int ival;    //沒有初始化!
std::cout<<ival<<std::endl;

6、聲明和定義

為了能讓多個文件訪問相同的變量,C++區(qū)分了聲明和定義。簡單地說就是可以用extern關鍵字來聲明,任何有分配內(nèi)存行為的聲明都是定義。定義也是聲明。聲明:標明變量的類型和名字;定義:為變量分配存儲空間,還可以為變量指定初始值。

舉例說明:

extern double pi; //聲明
double pi; //定義,聲明了pi同時定義了pi
extern double pi = 3.14159; //定義,因為它為pi分配了初值。只有當該extern語句
     位于函數(shù)外部的時候才允許使用初始化式,否則將導致編譯錯誤。

7、變量的隱藏:

std::string s1 = "I am a std::string!";
std::cout<<s1<<std::endl;
for(int s1=3; s1!=0; --s1)
std::cout<<"I am a number(int):"<<s1<<std::endl;

提示:在Visual Studio 2008中使用std::string定義一個變量,再通過std::cout將其輸出,將會得到“error C2679: 二進制“<<”: 沒有找到接受“std::string”類型的右操作數(shù)的運算符(或沒有可接受的轉(zhuǎn)換)”錯誤信息,這時要檢查頭文件中是否包含#include <string>。而在Eclipse中則不用如此設置(具體看編譯器版本)。這與標準庫實現(xiàn)的具體細節(jié)有關,在MSVC中,它在文件Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\string中被實現(xiàn),在GNU中,它在base_string.h中被實現(xiàn)。在使用std::string時,總是包含#include <string>是一個好習慣!

8、const對象默認為文件的局部變量

一般聲明變量后可以在其它文件中通過extern關鍵字聲明并使用該變量:

//文件1:
int counter;
//文件2:
extern int counter;
++counter;

但是如果是const則無法訪問??梢酝ㄟ^顯式指定extern關鍵字使其成為全局可訪問對象:

//文件1:
extern const int bufSize = getBufSize();
//文件2:
extern count int bufSize;
//……使用bufSize

注解:非const變量默認為extern。要使const變量能夠在其他的文件中訪問,必須顯式地指定它為extern。

9、引用

int ival = 1024;
int &refVal = ival;

當引用初始化后,只要該引用存在,就保持綁定到初始化時指向的對象。不可能將引用綁定到另一個對象。

也正因為如此,所以引用比指針的優(yōu)勢就在于:引用不可以在方法中篡改,這使得方法變量變得安全了。

10、const引用

const int ival = 1024;
const int &refVal = ival;

這里我們要求左側(cè)的類型是一致的,包括const!

非const引用只能綁定到與該引用同類型的對象。
const引用則可以綁定到不同但相關的類型的對象或綁定到右值。(具體示例詳見C++Primer v4 P52)

例如:

//錯誤代碼
double dval = 3.14;
const int &ri = dval;

編譯器會將這些代碼轉(zhuǎn)換成如以下形式的編碼:

int temp = dval;
const int &ri = temp;
如果ri不是const,那么可以給ri賦一新值。這樣做不會修改dval,而是修改了temp。期望對ri的賦值會修改dval的程序員會發(fā)現(xiàn)dval并沒有被修改。僅允許const引用綁定到需要臨時使用的值完全避免了這個問題,因為const引用是只讀的。
 

但是如下代碼可以執(zhí)行:

int ival = 1024;
const int &refVal = ival;
++ival;
//++refVal;    //error C3892: “refVal” 不能給常量賦值
std::cout<<"ival="<<ival<<"\trefVal="<<refVal<<std::endl;

輸出:ival=1025    refVal=1025

const double dval = 3.14;
const int &ri = (int)dval;
std::cout<<ri<<std::endl;
輸出:3

posted on 2008-12-19 17:52 volnet 閱讀(2933) 評論(6)  編輯 收藏 引用 所屬分類: C++ Primer 學習筆記

評論

# re: C++ notes (1) 2008-12-20 13:54 9278

看完第一句就知道copy的哪本書了 噢也!  回復  更多評論   

# re: C++ notes (1) 2008-12-20 13:56 volnet

@9278
從所屬分類也可以判斷~恭喜樓上!   回復  更多評論   

# re: C++ notes (1) 2008-12-21 16:11 永恒白天

不讓你使用 下劃線 的原因是標準規(guī)定說這些都是預留給編譯器用的  回復  更多評論   

# re: C++ notes (1) 2008-12-21 16:41 volnet

@永恒白天
所以那句話翻譯或者表達不好,怎么能說“不能”二字!呵呵  回復  更多評論   

# re: C++ notes (1) 2009-03-13 19:08 sinor51

不說:“不能”,您認為應該翻譯成什么呢?  回復  更多評論   

# re: C++ notes (1) 2009-03-13 19:15 volnet

@sinor51
可以說“不應該”,不能一般是指編譯會出錯吧  回復  更多評論   

特殊功能
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品久久久久久久久久妞妞 | 鲁鲁狠狠狠7777一区二区| 亚洲三级视频| 欧美电影专区| 欧美激情影音先锋| 亚洲国产精品久久精品怡红院| 免费在线视频一区| 亚洲福利在线看| 亚洲精品一区二区三区樱花| 欧美激情91| 亚洲美女视频| 午夜精品免费视频| 久久九九久精品国产免费直播| 久久性天堂网| 久久久久亚洲综合| 亚洲欧美一区二区视频| 国产日韩av高清| 欧美成人激情视频| 一色屋精品视频免费看| 国产精品久久77777| 国产视频一区二区三区在线观看| 狠狠色丁香婷婷综合| 一本色道久久综合亚洲91| 久久久久久网| 亚洲一区二区毛片| 欧美韩国日本综合| 久久久精品2019中文字幕神马| 午夜日韩激情| 欧美三区在线观看| 最新亚洲电影| 亚洲精品社区| 国产一区在线免费观看| 欧美国产日本在线| 国内揄拍国内精品久久| 亚洲欧美日韩精品久久久| 欧美日韩视频在线观看一区二区三区 | 国产欧美日韩不卡免费| 中文国产一区| 亚洲一级免费视频| 在线视频你懂得一区| 午夜精品在线| 亚洲高清电影| 欧美一区二区视频在线观看| 欧美日韩综合精品| 亚洲国产99精品国自产| 羞羞色国产精品| 亚洲麻豆av| 欧美黄色网络| 在线观看欧美一区| 久久岛国电影| 亚洲小视频在线观看| 欧美黄色日本| 亚洲高清视频在线观看| 久久成人18免费网站| 日韩视频在线免费观看| 美女国产一区| 激情五月综合色婷婷一区二区| 亚洲一区二区免费看| 91久久嫩草影院一区二区| 久久久国产精品一区| 国产欧美亚洲视频| 一区二区不卡在线视频 午夜欧美不卡在 | 久久精品在这里| 欧美另类专区| 亚洲欧洲精品一区二区| 亚洲高清视频中文字幕| 久久国产日韩欧美| 欧美日韩视频免费播放| 欧美成人在线免费视频| 尤物九九久久国产精品的特点 | 久久精品视频99| 亚洲综合99| 久久精品免费电影| 亚洲国产成人久久综合| 欧美激情在线| 欧美韩国一区| 亚洲国产精品一区制服丝袜| 亚洲国产精品久久久久秋霞不卡| 久久精品人人| 午夜精品一区二区在线观看| 国产精品久久久久久福利一牛影视| 日韩午夜高潮| 亚洲免费观看视频| 欧美日韩免费高清一区色橹橹| 一区二区国产在线观看| 一区二区激情视频| 国产欧美日韩不卡| 美日韩精品视频| 日韩一级不卡| 欧美日韩成人一区二区| 亚洲综合二区| 久久超碰97人人做人人爱| 伊人成人在线视频| 亚洲国产精品99久久久久久久久| 欧美日韩二区三区| 欧美在线观看视频| 久久国产欧美| 亚洲亚洲精品在线观看| 欧美一区二区三区精品电影| 在线精品国产欧美| 永久免费视频成人| 亚洲免费大片| 国产综合自拍| 亚洲激情视频在线| 国产精品私房写真福利视频| 另类图片国产| 国产精品久久久久久久app| 猛男gaygay欧美视频| 欧美网站在线观看| 欧美成年人网| 国产精品视频免费| 亚洲大片精品永久免费| 国产精品女人网站| 亚洲国产精品一区二区第一页 | 欧美日韩综合另类| 久久天天躁狠狠躁夜夜av| 欧美视频在线视频| 亚洲国产成人高清精品| 国产人成一区二区三区影院| 亚洲高清久久| 国产综合18久久久久久| 中文亚洲视频在线| 亚洲美女淫视频| 亚洲一区二区三区视频| 国产精品毛片大码女人| 亚洲国产欧美日韩另类综合| 国产午夜精品理论片a级大结局| 亚洲人成亚洲人成在线观看| 久久精品视频免费观看| 美女久久网站| 亚洲伊人伊色伊影伊综合网| 激情综合久久| 亚洲国产婷婷| 国产日韩欧美另类| 国产精品久久久久久久久免费 | 久久蜜桃资源一区二区老牛 | 亚洲欧美日韩中文视频| 女人天堂亚洲aⅴ在线观看| 欧美电影免费| 午夜精品久久久久久久久久久久 | 欧美黑人多人双交| 亚洲综合大片69999| 久久亚洲综合色| 午夜欧美大片免费观看| 国语自产偷拍精品视频偷| 久久av一区二区三区| 亚洲欧美激情四射在线日 | 久久久久**毛片大全| 在线成人中文字幕| 久久天天躁狠狠躁夜夜av| 午夜精品免费| 欧美精品在线一区二区| 久久久久久69| 国产人成一区二区三区影院| 欧美一级成年大片在线观看| 你懂的视频欧美| 久久免费视频在线| 久久尤物视频| 亚洲二区在线视频| 亚洲第一免费播放区| 欧美在线观看视频一区二区| 亚洲第一天堂无码专区| 欧美精品激情blacked18| 欧美成人精品在线观看| 精品成人一区二区三区| 久久国产精品毛片| 中日韩视频在线观看| 国产精品午夜国产小视频| 亚洲一区二区三区在线| 亚洲欧美成人一区二区在线电影| 欧美人与性动交α欧美精品济南到| 欧美一区二区视频97| 亚洲第一区在线观看| 欧美成人自拍视频| 亚洲人午夜精品| 亚洲无线视频| 国产精品乱人伦一区二区| 午夜精品久久久久久久99水蜜桃 | 欧美日韩在线三级| 欧美视频四区| 影音欧美亚洲| 亚洲人成小说网站色在线| 亚洲日本欧美天堂| 久久久久久精| 午夜视频久久久久久| 免费成人美女女| 在线免费观看视频一区| 欧美日韩国产综合一区二区| 狠色狠色综合久久| 欧美激情精品久久久久久蜜臀| 亚洲第一久久影院| 欧美一区不卡| 激情久久影院| 国产精品成人国产乱一区| 亚洲欧美制服另类日韩| 亚洲乱码国产乱码精品精天堂| 亚洲国产91| 国产偷久久久精品专区| 欧美三级电影一区| 美女国产精品|