C++ 派生類對(duì)象轉(zhuǎn)換成基類對(duì)象

/* class_protect.class */

/* 基類轉(zhuǎn)換派生類問題:(不安全的轉(zhuǎn)換)

既然轉(zhuǎn)換了那就是指向派生類了,調(diào)用函數(shù)不涉及到變量還可以,

如果涉及到變量就是不安全的了,

如果是基類轉(zhuǎn)派生類, 那么基類不含有派生類的成員,?這樣調(diào)用就可能出現(xiàn)安全問題??

*/

/*? 派生類轉(zhuǎn)基類 (安全的轉(zhuǎn)換)?

比較常規(guī)的做法是派生類指針轉(zhuǎn)換成基類的? */

/*??

#include <iostream>

#include <cstring>

using namespace std;

/* ================? CLASS BOX ================== */

class Box

{

private:

double height;

protected:

double width;

public:

void setHeight(double h);

double getHeight(void);

};

void Box::setHeight(double h)

{

height = h;

}

double Box::getHeight(void)

{

return height;

}

/* ================== CLASS SMALLBOX =========================== */

class SmallBox : Box

{

public:

void setSmallWidth(double wid);

double getSmallWidth(void);

void setSmallHeight(double h);

double getSmallHeight(void);

};

double SmallBox::getSmallWidth()

{

return width;

}

void SmallBox::setSmallWidth(double wid)

{

width = wid;

}

void SmallBox::setSmallHeight(double h)

{

setHeight(h);

}

double SmallBox::getSmallHeight(void)

{

return getHeight();

}

/* ==========================? MAIN ======================= */

int main()

{

SmallBox *small = new SmallBox();

/* 訪問順序? 派生類public函數(shù) -> 基類public成員 */

small->setSmallWidth(5.0);

cout << "SmallWidth:" << small->getSmallWidth() << endl;

/* 訪問順序 派生類public函數(shù) -> 基類public函數(shù) -> 基類private成員? */

small->setSmallHeight(11.01);

cout << "getSmallHeight:" << small->getSmallHeight() << endl;

/* 派生類轉(zhuǎn)換成基類 */

Box *b = (Box *)small;

cout << "Before convert , Box Height: " << b->getHeight() << endl;

/* 基類設(shè)置height */

b->setHeight(20.01);

/* 結(jié)果都是 20.01 */

cout << "After convert Box Height: " << b->getHeight() << endl;

cout << "After convert SmallBox Height: " << small->getSmallHeight() << endl;

return 0;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容