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

franksunny的個人技術(shù)空間
獲得人生中的成功需要的專注與堅持不懈多過天才與機會。 ——C.W. Wendte

網(wǎng)訊筆試歸來

昨天去網(wǎng)訊(杭州)筆試了,做了下筆試題,感覺題目都不難,但是自己做的的確不怎么樣,估計是沒機會去了,不過暫時還是先把幾道自己還記得的題目,寫出來,總結(jié)下,以做復習。

1、  要求自己實現(xiàn) String 類,給出了 String 類的以下頭文件類聲明

class String

{

public:

       String(const char *m_char = NULL);

       String(const String & Str);

       String& operator = (const String &Str);

       ~String();

private:

       char * m_Data;

};

 

關(guān)于 String 類的筆試題,以前看林銳的隨筆時聽說他在微軟面試時曾碰到那么一道題目,我自己也沒有真的下筆去做過,平常都是拿來就用的,這次自己碰到,才知道會死得那么慘,反正編得不堪入目(我就不拿出來獻丑了),下面是我回來后,自己重新寫的答案。

String::String(const char* m_char)

{

       int m_nLength = strlen(m_char) + 1;

       if (m_Data != NULL)

       {

              delete [] m_Data;

              m_Data = NULL;

       }// 以上判斷是否必要 ??

       m_Data = new char[m_nLength];

       memcpy(m_Data, m_char, m_nLength);

}

 

String::String(const String &Str)

{

       int m_nLength = strlen(Str.m_Data) + 1;// 以前真的不知道,原來對象的私有變量

// 在類的實現(xiàn)代碼中也是可以訪問的

       if (m_Data != NULL)

       {

              delete [] m_Data;

              m_Data = NULL;

       }// 以上判斷是否必要 ??

       m_Data = new char[m_nLength];

       memcpy(m_Data, Str.m_Data, m_nLength);

}

 

String& String::operator = (const String& Str) 

{

       if(this == &Str)

              return *this;

 

       int m_nLength = strlen(Str.m_Data) + 1;

       if (m_Data != NULL)

       {

              delete [] m_Data;

              m_Data = NULL;

       }// 以上判斷是否必要 ??

      

       m_Data = new char[m_nLength];

       memcpy(m_Data, Str.m_Data, m_nLength);

       return *this;

}

 

String::~String()

{

       if (m_Data != NULL)

       {

              delete [] m_Data;

              m_Data = NULL;

       }

}

 

2、  關(guān)于內(nèi)存分配

這個題目很簡單,就給了一個函數(shù),然后問函數(shù)內(nèi)的局部變量存放在哪里,我也不知道為什么當時會選擇 heap( ) ,下面再把幾個概念羅列出來:

1.            堆區(qū)( heap ):由程序員申請分配和釋放,屬動態(tài)內(nèi)存分配方式,若程序員不釋放,程序結(jié)束時可能會由 OS 回收。不過這個內(nèi)存分配很容易引起問題,如果申請的內(nèi)存不釋放就會造成內(nèi)存泄漏;如果釋放的不是所要釋放的內(nèi)存,則輕者引起程序運行結(jié)果出錯,重者系統(tǒng)崩潰。

2.            棧區(qū)( stack ):編譯器自動分配釋放,存放函數(shù)的形參值、局部變量的值,也是屬于動態(tài)內(nèi)存分配方式,它由系統(tǒng)分配,所以執(zhí)行效率也高,不過自由度小,聲明時就得決定其具體大小。

3.            全局區(qū)(靜態(tài)區(qū))( static ):全局變量和靜態(tài)變量的存儲是放在一塊的,而且初始化的全局變量和靜態(tài)變量在一塊區(qū)域,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。程序結(jié)束后由系統(tǒng)釋放,所以也不會造成內(nèi)存問題。

除了以上的變量外,還有兩類存放位置,文字常量區(qū)和程序代碼區(qū),兩者都是由系統(tǒng)分配和釋放,且文字常量區(qū)和前面三區(qū)合成為程序數(shù)據(jù)區(qū),與程序代碼區(qū)相對應(yīng)。

3、  關(guān)于類繼承的構(gòu)造和析構(gòu)函數(shù)

class Base

{

public:

       Base(){cout<< "Base" <<endl;};

       ~Base(){cout<<"~Base"<<endl;};

protected:

private:

};

 

class First:public Base

{

public:

       First(){cout << "First" << endl;};

       ~First(){cout << "~First" <<endl;};

};

 

int main()

{

       Base *a = new First;

       delete a;

}

問程序的輸出會是什么?

結(jié)果很簡單,也就是 Base

                               First

                   ~Base

其它還有一個關(guān)于 & 的題目,把我搞的云里霧里的,還要再看些東西才知道怎么來解釋。

posted on 2007-03-04 21:53 frank.sunny 閱讀(3408) 評論(10)  編輯 收藏 引用 所屬分類: C/C++學習和實踐

FeedBack:
# re: 網(wǎng)訊筆試歸來
2007-03-04 23:01 | 郁郁寡歡
第一,你的背景色太要命了,你自己看一分鐘試試!
第二,
===================
if (m_Data != NULL)
{
delete [] m_Data;
m_Data = NULL;

}
====================
你同樣的代碼重復次數(shù)太多了,就不能做成一個函數(shù)嗎?

第三,每次delete然后new,也可以做一些判斷,不用delete直接strcpy吧,不過這屬于優(yōu)化了,對于筆試應(yīng)該影響不大吧?  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-04 23:09 | SmartPtr
if (m_Data != NULL)
{
delete [] m_Data;
m_Data = NULL;
}

***************************************
因為C++delete一個NULL指針是合法的。(可能編譯器delete的時候就對NULL進行了特殊處理),所以無需判斷,直接寫:
delete [] m_Data;
m_Data = NULL;   回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-04 23:19 | DC
前面2個Constructor,肯定是不需要
if (m_Data != NULL)
{
delete [] m_Data;
m_Data = NULL;
}
而且是應(yīng)該直接付值m_Data = NULL;先,否則,程序在這里會有異常!因為m_Data的初值不會為0。


后面的String& String::operator = (const String& Str)需要判斷m_Data != NULL以判斷是否需要釋放內(nèi)存。


你現(xiàn)在的答案還是蠻多漏洞。  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-05 17:01 | frank.sunny
謝謝如上各位指點,我以后用代碼時背景改成灰色好了。

根據(jù)大家的建議,我后來改了下代碼,改成如下方式:
String::String(const char* m_char) :m_Data(NULL)
{
int m_nLength = strlen(m_char) + 1;
m_Data = new char[m_nLength];
strcpy(m_Data, m_char);
}

String::String(const String &Str) : m_Data(NULL)
{
int m_nLength = strlen(Str.m_Data) + 1;
m_Data = new char[m_nLength];
strcpy(m_Data, Str.m_Data);
}
個人還參考了下memcpy和strcpy的區(qū)別,也沒說哪個執(zhí)行效率高些,當然能簡化就簡化,  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-05 19:00 | tx7do
memcpy是匯編實現(xiàn)的,效率還是很高的。  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-05 21:40 | badtiger
長見識了!謝謝各位  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-05 22:27 | frank.sunny
@tx7do

的確如你所說,我也長見識了,呵呵
謝謝你
  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2007-03-08 17:33 | ZHua
一同學習阿 呵呵  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2008-10-14 18:17 | 貓貓咬
這樣實現(xiàn)String類太低效了,應(yīng)該一下分配出一定的空間(大于初始化的字符串長度),4字節(jié)的倍數(shù)會更好些。  回復  更多評論
  
# re: 網(wǎng)訊筆試歸來
2008-10-14 18:25 | 萬連文
這種問題,我的答案是 copy mfc的CString,ok?  回復  更多評論
  

常用鏈接

留言簿(13)

隨筆分類

個人其它博客

基礎(chǔ)知識鏈接

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜日韩在线观看| 欧美黄色片免费观看| 久久久亚洲一区| 欧美影院视频| 欧美中文字幕在线播放| 久久国产精品99精品国产| 欧美主播一区二区三区| 久久激情综合网| 女人色偷偷aa久久天堂| 亚洲人成网站精品片在线观看 | 香蕉av福利精品导航| 亚洲欧美www| 久久久在线视频| 亚洲高清资源综合久久精品| 亚洲精品一区在线| 欧美一区1区三区3区公司| 久久久999精品视频| 欧美理论电影在线观看| 国产九九精品| 亚洲国产高清视频| 亚洲欧美激情四射在线日| 久久久久久久一区二区三区| 欧美成人免费小视频| 一区二区三区鲁丝不卡| 久久久久久9999| 欧美日韩亚洲综合一区| 午夜在线a亚洲v天堂网2018| 老司机免费视频久久| 久久国产天堂福利天堂| 欧美福利专区| 亚洲综合日韩| 美女亚洲精品| 国产精品日韩在线一区| 1000精品久久久久久久久| 亚洲综合日韩| 欧美高潮视频| 欧美在线不卡| 国产精品国色综合久久| 亚洲精品午夜| 久久人体大胆视频| 夜夜嗨av一区二区三区中文字幕 | 亚洲私人影院在线观看| 久久婷婷久久| 国产日韩欧美自拍| 亚洲天堂第二页| 欧美二区在线播放| 久久不射2019中文字幕| 国产精品国产自产拍高清av王其| 亚洲精品1区2区| 久热综合在线亚洲精品| 亚洲午夜影视影院在线观看| 欧美激情一区| 亚洲精品视频啊美女在线直播| 欧美伊人影院| 亚洲欧美日韩国产成人精品影院| 欧美区亚洲区| 亚洲看片网站| 亚洲高清不卡在线| 久久米奇亚洲| 国产综合18久久久久久| 久久黄色小说| 夜夜爽av福利精品导航| 欧美大片在线看| 久久综合一区二区| 在线免费观看日韩欧美| 欧美成人69av| 免费成人美女女| 亚洲人成人99网站| 亚洲肉体裸体xxxx137| 欧美大学生性色视频| 91久久精品久久国产性色也91| 欧美黄色一区| 欧美片在线播放| 亚洲欧美激情视频| 性18欧美另类| 伊人久久大香线| 欧美国产日韩视频| 欧美日本亚洲韩国国产| 亚洲一级在线观看| 亚洲欧美日韩国产中文在线| 一本到高清视频免费精品| 一本色道久久综合亚洲91| 欧美精品在线视频观看| 一本色道精品久久一区二区三区| 亚洲欧洲免费视频| 国产精品v亚洲精品v日韩精品| 亚洲欧美成人精品| 欧美综合第一页| 亚洲美女黄网| 亚洲在线不卡| 亚洲国产欧美一区| 夜夜爽www精品| 韩国精品一区二区三区| 亚洲国产精品久久精品怡红院| 欧美日韩在线影院| 亚洲一级免费视频| 性色av一区二区三区| 在线日本成人| 亚洲深夜激情| 极品av少妇一区二区| 亚洲国产综合91精品麻豆| 欧美日韩一区在线| 久久五月婷婷丁香社区| 欧美精品一区二区在线观看 | 欧美日韩久久| 老牛影视一区二区三区| 欧美成人精品不卡视频在线观看| 男女激情视频一区| 羞羞漫画18久久大片| 欧美大尺度在线观看| 欧美一区二区三区久久精品茉莉花| 欧美在线视频免费播放| 亚洲一区国产精品| 免费观看一区| 久久久91精品| 欧美日韩午夜激情| 欧美mv日韩mv国产网站| 国产精品夜夜嗨| 日韩视频中文字幕| 亚洲狠狠丁香婷婷综合久久久| 先锋影音国产精品| 亚洲欧美日韩国产中文 | 亚洲一区二区精品视频| 亚洲精品视频在线播放| 欧美一区二区视频观看视频| 亚洲伦理网站| 久久精品亚洲精品| 欧美专区福利在线| 国产精品女主播| 99精品国产一区二区青青牛奶| 在线观看亚洲精品| 欧美一区三区三区高中清蜜桃 | 欧美高清影院| 怡红院精品视频在线观看极品| 亚洲一区免费| 亚洲欧美日韩在线观看a三区| 欧美精品二区三区四区免费看视频| 麻豆精品视频在线观看| 韩国成人理伦片免费播放| 韩国成人精品a∨在线观看| 久久夜色精品| 久久国产精品久久久久久| 国产精品美女在线| 亚洲天堂成人在线观看| 午夜精品福利一区二区蜜股av| 欧美日韩亚洲一区二区三区| 亚洲人成在线播放| 99伊人成综合| 欧美午夜精品久久久久久人妖| 一区二区免费在线播放| 午夜一区在线| 黄色成人片子| 免费在线观看成人av| 亚洲欧洲偷拍精品| 一区二区国产日产| 欧美午夜精品伦理| 亚洲欧美清纯在线制服| 久久久久欧美精品| 亚洲激情在线| 欧美午夜一区二区| 欧美在线播放高清精品| 欧美成人在线免费观看| aa级大片欧美| 国产日韩欧美在线视频观看| 欧美专区日韩视频| 亚洲电影免费观看高清| 一本色道88久久加勒比精品| 国产精品热久久久久夜色精品三区 | 国模精品一区二区三区| 久久尤物电影视频在线观看| 亚洲国产一区二区在线| 亚洲欧美国产另类| 国内精品久久久久久久97牛牛| 久久婷婷人人澡人人喊人人爽 | 久久尤物视频| 亚洲免费不卡| 国产一区视频观看| 欧美日韩国产首页在线观看| 午夜精品久久久久久久久| 亚洲国产91| 久久精品99国产精品日本| 亚洲人成小说网站色在线| 欧美日韩在线视频一区| 久久国内精品视频| 99精品视频免费| 久久亚洲春色中文字幕久久久| 一区二区三区精密机械公司| 国产综合色产| 国产精品中文在线| 欧美日韩激情小视频| 久久在精品线影院精品国产| 亚洲午夜免费视频| 亚洲国产成人一区| 久久综合一区| 久久se精品一区精品二区| 日韩视频在线免费| 精品av久久久久电影| 国产精品三上| 欧美三级特黄| 欧美人与禽猛交乱配视频|