Boolan C++面向?qū)ο蟾呒?jí)編程(上)第二周

第二周 string class

big three 三個(gè)特殊的函數(shù)

帶有指針的類(lèi)一定要具有以下幾種函數(shù):

  1. 拷貝構(gòu)造
  2. 拷貝賦值
  3. 析構(gòu)函數(shù)

本周課程內(nèi)容接著第一周淋纲,講了類(lèi)的設(shè)計(jì),不同的是本周以string class為例诽里,講解了帶有指針的類(lèi)的設(shè)計(jì)达吞。重點(diǎn)是big three的內(nèi)容吓坚。

以下通過(guò)本周的作業(yè)來(lái)重頭捋一遍
本周的作業(yè)是為 Rectangle 類(lèi)實(shí)現(xiàn)構(gòu)造函數(shù),拷貝構(gòu)造函數(shù),賦值操作符,析構(gòu)函數(shù)占卧。實(shí)例代碼如下:

class Shape
{                   
   int no;
};              
class Point
{
   int x;
   int y;
};              
class Rectangle: public Shape
{
   int width;
   int height;
   Point * leftUp;
public:
   Rectangle(int width, int height, int x, int y);
   Rectangle(const Rectangle& other);
   Rectangle& operator=(const Rectangle& other);
   ~Rectangle();         
};

so
開(kāi)始思考

  1. 數(shù)據(jù)贵涵。
    一個(gè)rectangle類(lèi)需要的數(shù)據(jù)應(yīng)該有長(zhǎng)、寬和左上角坐標(biāo)血柳。即width官册、height、leftup
  2. 構(gòu)造函數(shù)
    因?yàn)閘eftup為rectangle的左上角坐標(biāo)难捌,考慮設(shè)計(jì)為一個(gè)指針膝宁。那么作為一個(gè)帶有指針的類(lèi)就必須要有構(gòu)造鸦难、拷貝構(gòu)造、拷貝賦值和析構(gòu)函數(shù)员淫。

具體代碼來(lái)說(shuō)呢:

  1. 對(duì)于leftup合蔽,作業(yè)實(shí)例用了一個(gè)單獨(dú)的Point類(lèi)來(lái)表示,
class Point
{
   int x;
   int y;
};         

Point * leftUp
那么這里呢介返,先完善Point類(lèi)
代碼如下:

class Point
{
private:
    int x;
    int y;
public:
    Point(int x1=0,int y1=0)
        :x(x1),y(y1){}
};
  1. 構(gòu)造函數(shù)
Rectangle(int w=1, int h=1, int x=0, int y=0)
        :width(w),height(h),leftUp(&Point(x,y)){}

對(duì)于構(gòu)造函數(shù)拴事,需要將x和y轉(zhuǎn)換為Point,這里利用初值列,先通過(guò)point的構(gòu)造函數(shù)完成Point對(duì)象的創(chuàng)建圣蝎,再通過(guò)取地址符&挤聘,將地址傳遞給leftup。

  1. 拷貝構(gòu)造
    拷貝構(gòu)造時(shí)捅彻,由于Point是一個(gè)指針组去,因此需要對(duì)指針進(jìn)行判斷是否為空指針
inline
Rectangle::Rectangle(const Rectangle& other)
    :Shape(other), width(other.width), height(other.height) {
    if (other.leftUp != nullptr){
        leftUp = new Point(*(other.leftUp));
    }
    else
    {
        leftUp = nullptr;
    }
}
  1. 拷貝賦值
    同樣因?yàn)橹羔樀拇嬖冢截愘x值時(shí)需要首先進(jìn)行判斷步淹,看是否為自我賦值从隆。若是自我賦值,直接返回自己缭裆。
    若不是自我賦值键闺,長(zhǎng)=長(zhǎng),寬=寬澈驼。
    對(duì)于Point,由于是指針辛燥,要先考慮是否為空指針。
inline Rectangle&
Rectangle::operator=(const Rectangle& other) {
    if (this==&other)
    {
        return *this;
    }
    Shape::operator=(other);
    width = other.width;
    height = other.height;
    if (leftUp!=nullptr)
    {
        if (other.leftUp != nullptr) {
            *leftUp = *(other.leftUp);
        }
        else
        {
            delete leftUp;
            leftUp = nullptr;
        }
    }
    else
    {
        if (other.leftUp!=nullptr)
        {
            leftUp = new Point(*(other.leftUp));
        }
    }
    return *this;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缝其,一起剝皮案震驚了整個(gè)濱河市挎塌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌内边,老刑警劉巖榴都,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異漠其,居然都是意外死亡嘴高,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)和屎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拴驮,“玉大人,你說(shuō)我怎么就攤上這事柴信√灼。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵颠印,是天一觀的道長(zhǎng)纲岭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)线罕,這世上最難降的妖魔是什么止潮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮钞楼,結(jié)果婚禮上喇闸,老公的妹妹穿的比我還像新娘。我一直安慰自己询件,他們只是感情好燃乍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宛琅,像睡著了一般刻蟹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘿辟,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天舆瘪,我揣著相機(jī)與錄音,去河邊找鬼红伦。 笑死英古,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昙读。 我是一名探鬼主播召调,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛮浑!你這毒婦竟也來(lái)了唠叛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤沮稚,失蹤者是張志新(化名)和其女友劉穎玻墅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體壮虫,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澳厢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了囚似。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩拢。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖饶唤,靈堂內(nèi)的尸體忽然破棺而出徐伐,到底是詐尸還是另有隱情,我是刑警寧澤募狂,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布办素,位于F島的核電站角雷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏性穿。R本人自食惡果不足惜勺三,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望需曾。 院中可真熱鬧吗坚,春花似錦、人聲如沸呆万。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谋减。三九已至牡彻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間出爹,已是汗流浹背讨便。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留以政,地道東北人霸褒。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像盈蛮,于是被迫代替她去往敵國(guó)和親废菱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容