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

沐楓小筑(C++)

愛老婆,要比編程多一點(diǎn)...

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  18 Posts :: 0 Stories :: 84 Comments :: 0 Trackbacks

公告

沐楓的個人主頁

eoool.com生成

eoool.com生成

常用鏈接

留言簿(8)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 57590
  • 排名 - 404

最新評論

閱讀排行榜

評論排行榜

   C語言確實(shí)很優(yōu)雅,整個語言的設(shè)計(jì)簡潔一致。而在C++中,有一個讓人詬病的問題就是變量初始化的不一致性。
   C語言中的初始化,都是用花括號進(jìn)行,簡單美觀:

int array[] = {1,2,3,4,5};
struct Point point = {23};
struct Point arrPoint[] = 
{
  {
2,3},
  {
4,5},
  {
6,7}
};

   C++自然也兼容了C語言的初始化機(jī)制。然而,C++的Class乃至STL都不支持。它們要用不同的方式來初始化, 甚至根本不能夠直接初始化, 只能使用運(yùn)行時的賦值。
   比如Class:
class Param
{
public:
  
int Age;
  
int Value;
private:
  
int Level;
};

Param param 
= {2,3}; // ERROR
Param param = {2,3,4}; //ERROR
   無法初始化。而如果不初始化的話,所有的成員而處于無政府狀態(tài),這顯然很不讓人放心。于是,C++提供了專門用于Class的初始化方式--構(gòu)造函數(shù):
class Param
{
public:
  Param(
int x, int y)
    : x_(x), y_(y)
  {}
  Param()
    : x_(
0), y_(0)
  {}
private:
  
int x_, y_;
};

Param param(
1,2);
//
Param param;
   有了構(gòu)造函數(shù),可以在構(gòu)造函數(shù)的初始化列表中對成員進(jìn)行初始化。可是很明顯,這里頭還是有一個陷阱,默認(rèn)構(gòu)造初始化和非默認(rèn)構(gòu)造初始化的調(diào)用方式是不一致的。默認(rèn)構(gòu)造函數(shù)不能用括號來調(diào)用,否則編譯器將會發(fā)瘋:
Param param();
   它會把上面的語句看成是函數(shù)聲明,而后面調(diào)用的時候就會出錯,而錯誤信息可能會讓你抓狂一下。但是這樣也就算了,偏偏 new 可以接受有括號和沒括號兩種寫法:
Param* p1 = new Param;
Param
* p2 = new Param();
   再來說說初始化列表。初始化列表,事實(shí)上,也只能支持簡單的標(biāo)量類型,諸如int,bool,指針之類的;復(fù)雜點(diǎn)的,如數(shù)組、結(jié)構(gòu),不好意思,不支持--只能在構(gòu)造函數(shù)體中進(jìn)行賦值。還有一個很迷糊初學(xué)者的問題是,成員初始化的順序僅依賴于成員定義的順序,而不是初始化列表中的順序。

   再比如STL容器,這下好象更慘,連構(gòu)造函數(shù)都幫不上忙了,除了初始化一個空的容器,或是復(fù)制一下別的容器,我們只能做用默認(rèn)構(gòu)造函數(shù)進(jìn)行初始化。我們拿數(shù)組和vecotr做個比較:
// 數(shù)組
int arr[]={1,2,3,4};
// vector
vector<int> iarr;
// 必須在某個函數(shù)中賦初值
void init()
{
  
for(int i = 1; i <= 4++i) 
    iarr.push_back(i);
}

   再復(fù)雜一點(diǎn)的數(shù)據(jù)結(jié)構(gòu),那單單賦值程序就要寫上老長,而且還不好看。還要記得調(diào)用。這對于僅僅是簡單的設(shè)置一些初值的用途來說,太過于煩瑣。

   橫向比較,這次好象C++還不會太落伍,只有C和動態(tài)語言提供了初始化特性,其它支持OO高級語言好象都是學(xué)C++的。如Java, C#(注C#3.0開始提供初始化功能)...
   
   C++能不能做到簡潔一致的實(shí)始化呢?
   Boost的assign庫做了許多有益的工作。使用assign庫,至少現(xiàn)在可以初始化了:
vector<int> arr = list_of(1)(2)(3)(4);   

typedef boost::tuple
<int,std::string,int> tuple;
vector
<tuple> v = tuple_list_of( 1"foo"2 )( 3"bar"4 );

map
<int,int> next = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);

stack
<string> names = list_of( "Mr. Foo" )( "Mr. Bar")( "Mrs. FooBar" ).to_adapter();
   如果是賦值,也可以簡略很多:
vector<int> v;
+= 1,2,3,repeat(10,4),5,6,7,8,9;
// v = [1,2,3,4,4,4,4,4,4,4,4,4,4,5,6,7,8,9]
  不過,也僅能如此了。assign經(jīng)過許多努力,也僅能支持容器的初始化,而且還不夠漂亮。

   C++0x已確定提供與C一致的初始化功能。 Initialer lists Initializer Lists for Standard Containers Initializer lists WP wording 等草案就是為了這個目的服務(wù)的。
   如果使用C++0x,那么程序的初始化將變得清晰和一致:
complex<double> z = {1,2}; 
//
complex<double> z {1,2}; 
// 初始化中,有等號和無等號都是允許的,下同。
+= {2,3};

int a = {1}; 

new vector<string>{"once""upon""a""time"}; 

f( {
"Nicholas""Annemarie"} ); // 參數(shù)是兩個元素的列表

return { "Norah" }; // 返回只有一個元素的列表
 
int* e {};  // 初始化為0或NULL指針

map
<string,int> anim = 

  {
"bear",4}, 
  {
"cassovary",2}, 
  {
"tiger",7
}; 

   這好象是C++欠了十多年的債吧。
   
posted on 2007-09-27 17:39 沐楓 閱讀(2728) 評論(6)  編輯 收藏 引用 所屬分類: C++

Feedback

# re: 從賦值到初始化 2007-09-27 20:37 愛子
QQ群名稱:游戲編程學(xué)習(xí)和開發(fā)M
QQ群號碼:43047318
創(chuàng)建人QQ號碼:光愛之子(273612158)
QQ群描述:群里是可以提供游戲和有關(guān)游戲編程知識。同時還有數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)。 和一些懂得操作系統(tǒng)原理的人 希望你加入。 謝謝!還有游戲策劃,運(yùn)營有關(guān)方面知識。   回復(fù)  更多評論
  

# re: 從賦值到初始化 2007-09-28 00:15 lovedday
C++,拙劣的設(shè)計(jì),D語言正式出來后我估計(jì)就不想用C++了。  回復(fù)  更多評論
  

# re: 從賦值到初始化 2007-09-28 14:09 shen126
呵呵,很喜歡樓主的選題和風(fēng)格.
Thanks!  回復(fù)  更多評論
  

# re: 從賦值到初始化 2007-09-30 14:08 空明流轉(zhuǎn)
我還真不覺得這樣有什么好。。。只是現(xiàn)在用C#,覺得C++不支持構(gòu)造函數(shù)的多態(tài)行為是一件多么讓人感到麻煩的事情。  回復(fù)  更多評論
  

# re: 從賦值到初始化 2007-10-04 16:21 chenjh
樓主你好,你對C++真是了解,不知你能否幫我解說下我手上的程序,是用C++編寫的關(guān)于偽彩色處理的,不知可否?謝謝!

  回復(fù)  更多評論
  

# re: 從賦值到初始化 2007-10-06 23:10 沐楓
@空明流轉(zhuǎn)
我也用C#的啊?可是怎么不知道c#居然有構(gòu)造函數(shù)多態(tài)行為。
你可能是指從一個構(gòu)造函數(shù)調(diào)用另一個構(gòu)造函數(shù)吧。
C++將會在下一個標(biāo)準(zhǔn)中增加這個功能。  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲激情av在线| 欧美在线视频一区| 欧美午夜精品久久久久久超碰| 美女网站久久| 欧美精品国产一区二区| 欧美aaaaaaaa牛牛影院| 欧美精品日韩www.p站| 欧美日韩91| 国产精品夜色7777狼人| 国产麻豆日韩| 在线电影欧美日韩一区二区私密| 亚洲国产成人久久综合一区| 9色国产精品| 欧美在线91| 欧美激情免费在线| av成人免费在线观看| 亚洲欧美在线一区| 男同欧美伦乱| 国产精品夜色7777狼人 | 亚洲国产精品久久久久婷婷884| 91久久综合亚洲鲁鲁五月天| 亚洲一区二区三区777| 久久岛国电影| 亚洲精品一区二区三区蜜桃久| 国产一区激情| 欧美日本国产在线| 国产综合自拍| 99精品热视频| 美女视频黄免费的久久| 亚洲美女区一区| 久久久久久久久久久久久久一区 | 亚洲视频免费| 美女日韩欧美| 欧美亚洲综合在线| 欧美视频一区二区| 亚洲免费成人| 欧美成人在线免费观看| 香蕉久久夜色精品| 欧美三区美女| 一本色道久久综合亚洲精品小说| 美日韩精品视频| 久久爱另类一区二区小说| 国产精品成人午夜| 国产精品99久久久久久久久| 欧美激情女人20p| 久久这里只有| 黄色另类av| 久久久久久久国产| 性做久久久久久免费观看欧美| 国产精品v欧美精品v日韩精品| 艳女tv在线观看国产一区| 亚洲大胆在线| 欧美成ee人免费视频| 在线观看日韩精品| 麻豆精品91| 榴莲视频成人在线观看| 亚洲电影免费观看高清完整版| 久久久青草婷婷精品综合日韩| 午夜在线精品偷拍| 国产有码一区二区| 免费不卡在线观看| 欧美成人午夜77777| 日韩一二在线观看| 日韩一级裸体免费视频| 国产精品porn| 久久黄色级2电影| 久久久久www| 亚洲国产精品黑人久久久| 欧美成年人视频网站| 老牛影视一区二区三区| 亚洲精品久久久久久久久久久久| 欧美高清一区| 欧美日韩一区二区三区在线 | 一本色道88久久加勒比精品| 欧美精品二区三区四区免费看视频| 99在线精品视频在线观看| 欧美.www| 亚洲免费高清| 一本色道久久88亚洲综合88| 国产精品呻吟| 久久久亚洲国产天美传媒修理工| 久久福利毛片| 亚洲韩国精品一区| 99国产精品视频免费观看| 国产精品美女久久久久久久| 欧美制服丝袜第一页| 久久久久久久欧美精品| 亚洲日本无吗高清不卡| 99精品久久久| 国产亚洲精品成人av久久ww| 欧美韩日一区二区| 国产精品网站在线| 欧美福利电影网| 国产精品素人视频| 欧美成人乱码一区二区三区| 欧美人与禽猛交乱配| 久久9热精品视频| 免费人成精品欧美精品| 亚洲欧美日韩一区二区三区在线观看 | 亚洲一区二区精品在线观看| 亚洲欧美一区二区三区久久| 91久久线看在观草草青青| 99精品国产福利在线观看免费| 国产自产精品| 这里只有精品视频| 亚洲精品女av网站| 欧美在线观看视频| 亚洲永久免费精品| 乱人伦精品视频在线观看| 欧美一区二区三区电影在线观看 | 国产伦精品一区二区三区高清版 | 久久午夜激情| 欧美日韩综合另类| 亚洲国产精品一区二区三区| 国产午夜精品理论片a级大结局 | 国产精品乱子久久久久| 欧美黄色影院| 在线高清一区| 久久er精品视频| 欧美在线视频一区二区三区| 欧美日韩国产一中文字不卡| 嫩草影视亚洲| 在线观看久久av| 欧美一区二区三区四区在线观看 | 欧美在线网址| 欧美精品激情在线| 亚洲欧美日韩区| 国产精品大片免费观看| 亚洲人精品午夜| 夜夜嗨av一区二区三区四区 | 韩国美女久久| 欧美亚洲一区二区三区| 亚洲欧美视频在线观看视频| 欧美日韩亚洲一区二区三区四区 | 羞羞视频在线观看欧美| 西西人体一区二区| 国产精品夫妻自拍| 一区二区激情| 羞羞色国产精品| 国产一区二区三区在线观看免费视频| 亚洲一区二区在线视频| 欧美一区二区三区免费观看 | 欧美日在线观看| 99视频一区二区三区| 亚洲视频精选| 国产精品视频| 欧美专区18| 欧美成人日本| 亚洲最新在线视频| 国产精品白丝jk黑袜喷水| 亚洲网站视频| 久热精品视频在线观看一区| 亚洲高清在线观看| 欧美日韩精品久久| 亚洲在线国产日韩欧美| 久久久噜噜噜久久人人看| 激情视频一区二区| 欧美xart系列高清| 一区二区av| 久久久夜夜夜| 日韩一区二区精品在线观看| 欧美成人综合一区| 亚洲在线一区二区三区| 久久亚洲视频| 一区二区福利| 国产午夜精品全部视频播放| 久久综合给合久久狠狠色| 亚洲欧洲日韩女同| 性18欧美另类| 亚洲精品乱码久久久久久黑人| 欧美日韩成人网| 欧美专区在线播放| 最新国产成人av网站网址麻豆| 亚洲欧美日韩专区| 在线免费不卡视频| 国产精品亚洲不卡a| 久久综合成人精品亚洲另类欧美| 99热免费精品在线观看| 久久视频在线免费观看| 亚洲一区三区视频在线观看 | 欧美一区二区三区在线播放| 在线观看亚洲视频| 国产精品久久久久久久午夜| 久久一日本道色综合久久| 一本色道久久综合亚洲精品不卡 | 99视频一区二区三区| 欧美日韩在线视频首页| 一本久久a久久免费精品不卡| 国产毛片一区二区| 欧美激情亚洲| 久久国产天堂福利天堂| 夜夜躁日日躁狠狠久久88av| 你懂的国产精品永久在线| 亚洲欧洲av一区二区| 99re8这里有精品热视频免费 | 激情久久综合| 国产精品入口麻豆原神| 欧美日韩综合网| 欧美国产综合视频| 久久一本综合频道|