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

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

網訊筆試歸來

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

1、  要求自己實現 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;

};

 

關于 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;// 以前真的不知道,原來對象的私有變量

// 在類的實現代碼中也是可以訪問的

       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、  關于內存分配

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

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

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

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

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

3、  關于類繼承的構造和析構函數

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;

}

問程序的輸出會是什么?

結果很簡單,也就是 Base

                               First

                   ~Base

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

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

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

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

第三,每次delete然后new,也可以做一些判斷,不用delete直接strcpy吧,不過這屬于優化了,對于筆試應該影響不大吧?  回復  更多評論
  
# re: 網訊筆試歸來
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: 網訊筆試歸來
2007-03-04 23:19 | DC
前面2個Constructor,肯定是不需要
if (m_Data != NULL)
{
delete [] m_Data;
m_Data = NULL;
}
而且是應該直接付值m_Data = NULL;先,否則,程序在這里會有異常!因為m_Data的初值不會為0。


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


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

根據大家的建議,我后來改了下代碼,改成如下方式:
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的區別,也沒說哪個執行效率高些,當然能簡化就簡化,  回復  更多評論
  
# re: 網訊筆試歸來
2007-03-05 19:00 | tx7do
memcpy是匯編實現的,效率還是很高的。  回復  更多評論
  
# re: 網訊筆試歸來
2007-03-05 21:40 | badtiger
長見識了!謝謝各位  回復  更多評論
  
# re: 網訊筆試歸來
2007-03-05 22:27 | frank.sunny
@tx7do

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

常用鏈接

留言簿(13)

隨筆分類

個人其它博客

基礎知識鏈接

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            美脚丝袜一区二区三区在线观看 | 免费亚洲一区二区| 亚洲特级片在线| 国产精品v日韩精品| 午夜宅男久久久| 亚洲欧美日韩国产综合| 国产亚洲福利| 猛干欧美女孩| 欧美激情中文不卡| 亚洲欧美日韩一区二区| 欧美亚洲免费高清在线观看| 韩日欧美一区二区三区| 欧美韩日一区二区三区| 欧美日韩另类丝袜其他| 欧美一区二区三区精品电影| 久久精品国产99国产精品| 亚洲激精日韩激精欧美精品| 99re8这里有精品热视频免费| 国产精品久久综合| 久久综合给合| 欧美日韩福利| 久久亚洲精品中文字幕冲田杏梨| 另类人畜视频在线| 亚洲一级黄色| 老鸭窝亚洲一区二区三区| 亚洲午夜一级| 久久综合中文色婷婷| 亚洲曰本av电影| 久久深夜福利| 欧美夜福利tv在线| 欧美高清视频在线| 久久精品成人| 欧美日韩理论| 欧美成人xxx| 国产精品色网| 亚洲人成77777在线观看网| 国产目拍亚洲精品99久久精品| 美日韩精品视频| 国产伦精品一区二区三| 最新日韩av| 尤物yw午夜国产精品视频明星| 一本久久a久久免费精品不卡| 有坂深雪在线一区| 亚洲欧美日韩精品久久久| 日韩一级黄色大片| 久久久99精品免费观看不卡| 性欧美xxxx大乳国产app| 欧美精品18+| 女主播福利一区| 黄色成人免费观看| 午夜精品在线视频| 亚洲一区二区三区四区在线观看 | 鲁大师成人一区二区三区| 亚洲一区在线免费观看| 欧美国产第二页| 欧美激情精品久久久| 国产综合自拍| 久久gogo国模啪啪人体图| 亚洲一区二区黄| 欧美日韩一区在线| 91久久精品日日躁夜夜躁欧美| 在线观看视频一区二区| 久久精品视频一| 久久婷婷国产综合国色天香| 国产精品视频精品视频| 一区二区高清视频在线观看| 亚洲天堂成人在线视频| 欧美日韩亚洲在线| 日韩一级黄色片| 亚洲综合首页| 国产精品日韩专区| 亚洲男人的天堂在线观看| 香港久久久电影| 国产亚洲精品激情久久| 西西人体一区二区| 久久欧美中文字幕| 精品二区视频| 女生裸体视频一区二区三区| 亚洲国产精品久久久久婷婷老年| 亚洲精品欧洲| 欧美午夜电影完整版| 亚洲一区二区三区涩| 欧美一级大片在线观看| 韩曰欧美视频免费观看| 久久香蕉国产线看观看网| 亚洲国产精品久久久久婷婷884 | 欧美日韩国产限制| 99日韩精品| 久久精品国产999大香线蕉| 韩国av一区二区三区| 免费观看国产成人| 亚洲乱码国产乱码精品精可以看 | 99视频在线精品国自产拍免费观看 | 亚洲视频精品在线| 国产精品扒开腿做爽爽爽软件| 亚洲愉拍自拍另类高清精品| 久久久久久国产精品一区| 亚洲精品麻豆| 国产精品入口日韩视频大尺度| 久久精品日韩| 99在线精品视频| 久久久久国产精品人| 亚洲人成毛片在线播放| 国产伦一区二区三区色一情| 久久夜色精品国产噜噜av| 一本色道久久综合亚洲精品按摩| 久久久久www| 中日韩美女免费视频网站在线观看| 国产精品男女猛烈高潮激情| 蜜桃视频一区| 翔田千里一区二区| 日韩一区二区精品视频| 久久午夜国产精品| 亚洲一区二区三区四区五区黄| 一区二区在线观看av| 国产精品久久久久久久免费软件| 久久亚洲精品网站| 亚洲欧美另类久久久精品2019| 亚洲电影在线| 美女999久久久精品视频| 午夜在线不卡| 亚洲一级在线观看| 亚洲精品久久7777| 国产综合色产| 国产欧美短视频| 欧美性生交xxxxx久久久| 欧美mv日韩mv亚洲| 久久久久久夜| 欧美一区二区观看视频| 亚洲一区二区三区在线看| 亚洲三级色网| 亚洲国产日韩一区| 欧美国产日韩一区二区在线观看 | 亚洲成在线观看| 韩国成人精品a∨在线观看| 国产精品无码永久免费888| 欧美日韩精品免费在线观看视频| 久久婷婷综合激情| 久久久精品999| 欧美中文在线视频| 午夜精品久久久久久久| 亚洲一区二区三区成人在线视频精品 | 亚洲精品无人区| 亚洲精品一区在线观看香蕉| 亚洲人成网站在线观看播放| 亚洲电影观看| 亚洲黄色性网站| 亚洲精品久久久久久久久| 亚洲国产精品第一区二区| 亚洲国产精品久久久久婷婷老年| 激情久久影院| 亚洲成色最大综合在线| 亚洲人成网在线播放| 亚洲精品一区二区三区在线观看| 亚洲韩国一区二区三区| 亚洲免费高清| 亚洲资源av| 久久免费99精品久久久久久| 麻豆成人精品| 91久久夜色精品国产九色| 亚洲人成网站777色婷婷| 99re6热在线精品视频播放速度| av成人毛片| 午夜日韩在线| 老司机精品导航| 欧美三级特黄| 国产一区日韩一区| 亚洲国产精品视频| 中文在线一区| 久久久久久久久久久久久9999 | 午夜激情亚洲| 久久久久网站| 亚洲激情视频网站| 亚洲婷婷在线| 久久亚洲私人国产精品va媚药| 欧美激情中文字幕一区二区| 欧美亚洲成人免费| 精品成人乱色一区二区| 亚洲精品乱码久久久久久| 午夜精品一区二区三区电影天堂 | 久久久人成影片一区二区三区| 欧美成人午夜| 亚洲图片在线观看| 麻豆精品网站| 国产精品毛片| 亚洲精品乱码久久久久久久久 | 免费观看欧美在线视频的网站| 91久久精品一区二区三区| 亚洲一区二区欧美| 欧美www视频| 国产偷久久久精品专区| 日韩一级黄色大片| 美女亚洲精品| 亚洲一区二区三区影院| 欧美成人精品福利| 国产一区二区三区av电影| 亚洲少妇自拍| 亚洲国产午夜| 老鸭窝91久久精品色噜噜导演| 国产精品无码永久免费888|