亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 深度探索c++對象模型(3).txt

?? 深度探索c++對象模型中文版
?? TXT
字號:
介紹
  多態是一種威力強大的設計機制,允許你繼承一個抽象的public接口之后,封裝相關的類型,需要付出的代價就是額外的間接性--不論是在內存的獲得,或是在類的決斷上,C++通過class的pointer和references來支持多態,這種程序風格就稱為"面向對象". 

  大家好,雷神關于《深度探索C++對象模型》筆記終于又和大家見面了,速度慢的真是可以。好了不浪費時間了,直接進入主題。
  這篇筆記主要解決了幾個常常被人問到的問題。
  1、C++支持多重繼承嗎?
  2、結構和類的區別是什么?
  3、如何設計一個面向對象的模型?

  C++支持多重繼承(JAVA和C#不支持多重繼承),雖然我想我可能一輩子用不到它這一特性(C++是雷神的業余愛好),但至少我要知道它可以。典型的多重繼承是下面這個:


//iostream 從istream 和 ostream 兩個類繼承。
class iostream:public istream,public ostream 
{......};  

  結構struct和類class到底有沒有區別?VCHELP上前幾天還看到一個帖子在討論這個問題。其實結構和類真的沒什么區別,不過我們需要掌握的是什么時候用結構好,什么時候用類好,當然這沒有嚴格的規定。通常我們混合使用它們,從書上的例子,我們可以看出為什么還需要保留結構,并且書上給出了一個方法:


struct C_point{.......}; //這是一個結構
class Point
{
public:
operator C_point(){return _c_point;}
//....
private:
C_point _c_point;
//....
}  

  這種方法被成為組合(composition).它將一個對象模型的全部或部分用結構封裝起來,這樣做的好處是你既可以在C++中應用這個對象模型,也可以在C中應用它。因為struct封裝了class的數據,使C++和C都能有合適的空間布局。

  面向對象模型是有一些彼此相關的類型,通過一個抽象的base class(用來提供接口),被封裝起來。真正的子類都是通過它派生的。當然一個設計優秀的對象模型還必須考慮很多的細節問題,雷神根據自己的理解寫出一個面向對象模型的代碼,大家可以看看,高手請給指出有沒有問題。雷神先謝了。

  思路:我想要實現一個人員管理管理的對象模型,雷神一直在思考一個人員管理的組件(當然最終它會用C#實現的一個業務邏輯對象,并通過數據庫控制對象和數據庫進行交互,通過WEB form來顯示界面)。這里借用一下自己的已經有的的想法,用C++先進行一下實驗,由于只是為了體會面向對象的概念,我們采用面向對象的方法實現一個鏈表程序,而且沒有收集信息的接口。信息從mina()函數顯式給出。

  這個對象模型應該可以實現對人員的一般性管理,要求具備以下功能:

  創建一個人員信息鏈表
  添加、刪除人員信息
  顯示人員信息

//*************************************************
//PersonnelManage.cpp
//創建人:雷神
//日期:2002-8-30
//版本:
//描述:
//*************************************************

#include 
#include 
//基類,是此對象模型的最上層父類
class Personnel
{
friend class point_list; //用來實現輸出鏈表,以及插入或刪除人員的功能.
protected:
char serial_number[15];//編號
char name[10];//名稱
char password[15]//口令
Personnel *pointer;
Personnel *next_link;
public:
Personnel(char *sn,char *nm,char *pwd)
{
strcpy(serial_number,sn);
strcpy(name,sm);
strcpy(password,pwd);
next_link=0;
}
Personnel()
{
serial_number[0]=NULL;
name[0]=NULL;
password[0]=NULL;
next_link=0;
}
void fill_serial_number(char *p_n)
{
strcpy(serial_number,p_n);
}
void fill_name(char *p_nm)
{
strcpy(name,p_nm);
}
void fill_password(char *p_pwd)
{
strcpy(password,p_pwd);
}

virtual void addnew(){}
virtual void display()
{
cout<<"\n編號:"< cout<<"名字:"< cout<<"口令:"< }
};
//下面是派生的子類,為了簡單些我在把子類進行了成員簡化。
//思路:由父類派生出成員子類,正式成員要求更詳細的個人資料,這里省略了大部份.
//并且正式成員可以有一些系統的操作權限,這里省略了大部份。
//正式成員子類
class Member:public Personnel
{
friend class point_list;
private:
char member_email[50];
char member_gender[10];
double member_age;
public:
Member(char *sn,char *nm,char *pwd,char *em,char *gd,double ag):Personnel(sn,nm,pwd)
{
strcpy(member_email,em);
strcpy(member_gender,gd);
member_age=age;
}
Member():Personnel()
{
member_email[0]=NULL;
member_gender=NULL;
member_age=0.0;
}
void fill_email(char *p_em)
{
strcpy(member_email,p_em);
}
void fill_gender(char *p_gd)
{
strcpy(member_gender,p_gd);
}
void fill_age(double ages)
{
member_age=ages;
}

void addnew()
{
pointer=this;
}
void display()
{
Personnel::display()
cout<<"電子郵件:"< cout<<"性別:"< cout<<"年齡"< }
};

//好了,我們還需要實現一個超級成員子類和一個項目經理的子類.
//這是超級成員類
class Supermember:public Member
{
friend class point_list;
private:
int sm_documentcount;//提交的文檔數
int sm_codecount;//提交的代碼段數 
public:
Supermember(char *sn,char *nm,char *pwd,char *em,char *gd,double ag,int dc,int cc):Member(sn,nm,pwd,gd,ag)
{
sm_documnetcount=0;
sm_codecount=0;
}
Spupermember():Member()
{
sm_documentcount=0;
sm_codecount=0;
}
void fill_documentcount(int smdc)
{
sm_documentcount=smdc;
}
void fill_codecount(int smcc)
{
sm_codecount=smcc; 
}

void addnew()
{
pointer=this;
}
void display()
{
Member::display()
cout<<"提交文章數:"< cout<<"提交代碼段數"< }
};

//實現友元類
class point_list
{
private:
Personnel *location;
public:
point_list()
{
location=0;
}
void print();
void insert(Personnel *node);
void delete(char *serial_number);
}
//顯示鏈表
void point_list::print()
{
Personnel *ps=location;
while(ps!=0)
{
ps->display();
ps=ps->next_link;
}
}
//插入鏈表
void point_list::insert(Personnel *node)
{
Personnel *current_node=location;
Personnel *previous_node=0;
while(current_node!=0 && (strcmp(current_node->name,node->name<0)
{
previous_node=current_node;
current_node=current_node->next_link;
}
node->addnew()
node->pointer->next_link=current_node;
if(previous_node==0)
location=node->pointer;
else
previous_node->next_link=node->pointer;
}

//從鏈表中刪除
void point_list::delete(char *serial_number)
{
Personnel *current_node=location;
Personnel *previous_node=0;
while(current_node!=0 && strcmp(current_node->serial_number,serial_number)!=0)
{
previous_node=current_node;
current_node=current_node->next_link;
}
if(current_node !=0 && previous_node==0)
{
location=current_node->next_link;
}
else if(current_node !=0 && previous_node!=0)
{
previous_node->next_link=current_node->next_link;
}
}

//這是主函數,我們顯式的增加3個Supermember信息,然后在通過編號刪除一個
//我們沒有從成員再派生出管理成員,所以沒有辦法演示它,但我們可以看出要實現它并不難
//注意:此程序沒有經過驗證,也許會有BUG.
main()
{
point_list pl;
Supermember sm1("000000000000001","雷神","123456","lsmodel@ai361.com","男",29.9,10,10);
Supermember sm1("000000000000002","木一","234567","MY@ai361.com","男",26.5,20,5);
Supermember sm1("000000000000003","落葉夏日","345678","LYXR@ai361.com","男",24.8,5,15);
//如果我們還派生了管理人員,可能的方式如下:
//Managemember mm1("000000000000004","ADMIN","888888","webmaster@ai361.com","男",30,5,15,......);

//下面是將上面的3個人員信息加到鏈表中
pl.insert(&sm1);
pl.insert(&sm2);
pl.insert(&sm3);
//對應管理人員的 pl.insert(&mm1);

//下面是顯示他們
//下面是顯示人員列表
pl.print();

//下面是刪除一個人員信息
pl.delete("000000000000001");
//我們再顯示一次看看.
cout<<"\n刪除后的列表:\n";
pl.print();
}


  程序沒有上機驗證,在我的腦子里運行了一下,我想輸出結果應該是這樣的:

編號:000000000001
名稱:雷神
口令:123456
電子郵件:lsmodel@ai361.com
性別:男
年齡:29.9
提交文章數:10
提交代碼數:10

編號:000000000002
名稱:木一
口令:234567
電子郵件:MY@21CN.com
性別:男
年齡:26.5
提交文章數:20
提交代碼數:5

編號:000000000003
名稱:落葉夏日
口令:345678
電子郵件:LYXR@163.com
性別:男
年齡:24.8
提交文章數:5
提交代碼數:15

刪除后的列表:

編號:000000000002
名稱:木一
口令:234567
電子郵件:MY@21CN.com
性別:男
年齡:26.5
提交文章數:20
提交代碼數:5

編號:000000000003
名稱:落葉夏日
口令:345678
電子郵件:LYXR@163.com
性別:男
年齡:24.8
提交文章數:5
提交代碼數:15


  通過上面的例子,我想我們能夠理解對象模型的給我們帶來的好處,我們用了大量的指針和引用,來完成多態的特性.和書上的資料庫的例子不同,我們多了一層,那是因為我考慮人員可能是匿名,也可能是注冊的,所以為了區別他們,用了兩層來完成接口,然后所有注冊的正式成員才都由Member類派生出不同的權限的人員,例如超級成員和管理人員.

  最后用書上的一段話總結一下吧.P34

  總而言之,多態是一種威力強大的設計機制,允許你繼承一個抽象的public接口之后,封裝相關的類型,需要付出的代價就是額外的間接性--不論是在內存的獲得,或是在類的決斷上,C++通過class的pointer和references來支持多態,這種程序風格就稱為"面向對象".

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃av一区二区三区电影| 99re热这里只有精品视频| 国内精品免费**视频| 北条麻妃一区二区三区| 制服丝袜亚洲网站| 亚洲三级在线免费| 久久99精品国产麻豆不卡| 在线观看日韩毛片| 日本一二三不卡| 久久福利视频一区二区| 欧美天堂一区二区三区| 欧美激情一区二区在线| 美女国产一区二区| 欧美日本免费一区二区三区| 中文字幕字幕中文在线中不卡视频| 日韩—二三区免费观看av| 亚洲精品一区二区三区蜜桃下载 | 欧美tickling网站挠脚心| 国产精品毛片a∨一区二区三区| 亚洲va韩国va欧美va| 一本大道久久a久久综合婷婷| 久久综合九色综合97婷婷 | 日韩精品电影在线| 91九色02白丝porn| 国产精品网站一区| 国产精品性做久久久久久| 欧美大片日本大片免费观看| 日韩电影一区二区三区四区| 欧美日韩在线一区二区| 亚洲另类一区二区| 91免费看`日韩一区二区| 国产精品女上位| 国产乱人伦偷精品视频免下载| 欧美一级高清片在线观看| 亚洲高清免费观看高清完整版在线观看| 成人黄色在线看| 国产精品国产三级国产aⅴ原创| 国产成人精品三级麻豆| 国产欧美日韩精品a在线观看| 国产激情偷乱视频一区二区三区| 日韩精品一区二区三区视频在线观看| 首页国产欧美日韩丝袜| 91精品在线观看入口| 奇米精品一区二区三区在线观看| 久久久久97国产精华液好用吗| 天堂av在线一区| 91精品婷婷国产综合久久竹菊| 五月天久久比比资源色| 欧美丰满美乳xxx高潮www| 日韩国产精品大片| 日韩精品一区二区三区视频| 国产在线精品免费av| 中文字幕免费不卡在线| 成人app软件下载大全免费| 亚洲日本va在线观看| 欧美在线免费视屏| 免费欧美在线视频| 久久综合久久99| 97久久久精品综合88久久| 亚洲一区二区三区美女| 欧美videos中文字幕| 国产精品888| 亚洲精品网站在线观看| 欧美一区二区三区小说| 国产成人鲁色资源国产91色综| 亚洲欧美激情小说另类| 欧美一区二区人人喊爽| 国产成人在线网站| 亚洲国产精品久久人人爱| 欧美成人video| 91色在线porny| 青青草国产精品亚洲专区无| 欧美激情中文字幕| 欧美精品久久天天躁| 国产91丝袜在线播放0| 亚洲成av人片一区二区三区| 久久久久久久精| 欧美视频一区二区三区| 国产精品一线二线三线精华| 亚洲免费观看在线视频| 久久伊人中文字幕| 欧美调教femdomvk| proumb性欧美在线观看| 蜜桃在线一区二区三区| 亚洲私人黄色宅男| 婷婷激情综合网| 日本一区二区成人| 精品久久久久久最新网址| 色av一区二区| 成人avav在线| 美女视频黄 久久| 亚洲国产综合人成综合网站| 国产精品人成在线观看免费| 欧美电视剧在线观看完整版| 欧美性xxxxxxxx| 91丝袜美女网| 国产白丝精品91爽爽久久| 麻豆中文一区二区| 亚洲妇熟xx妇色黄| 自拍av一区二区三区| 中文字幕欧美激情| 久久久三级国产网站| 日韩欧美的一区| 欧美三级在线看| 在线观看日韩一区| 色综合网色综合| 99久久精品国产精品久久| 国产乱码精品一区二区三| 另类中文字幕网| 精品在线观看视频| 久久爱另类一区二区小说| 日韩精品免费专区| 日韩精品视频网站| 日本va欧美va瓶| 日产精品久久久久久久性色| 午夜精品久久久久久| 亚洲电影一区二区| 亚洲v中文字幕| 午夜精品福利一区二区三区av| 亚洲国产精品人人做人人爽| 蜜臀av一区二区三区| 日韩av在线播放中文字幕| 午夜精品久久久久久久久| 日韩精彩视频在线观看| 日韩不卡一区二区三区| 美女一区二区三区| 久久99精品视频| 国产精品88av| 91亚洲精品久久久蜜桃网站| 一本色道a无线码一区v| 色婷婷久久久综合中文字幕| 色欧美日韩亚洲| 91麻豆精品91久久久久久清纯 | 国产成a人亚洲精品| 成人精品视频一区二区三区尤物| 99国产麻豆精品| 欧美福利电影网| 久久精品欧美一区二区三区麻豆 | 国产高清无密码一区二区三区| 国产不卡免费视频| 在线免费观看成人短视频| 6080国产精品一区二区| 精品国产sm最大网站免费看 | 日韩精品一区二区在线| 欧美经典一区二区| 亚洲一区自拍偷拍| 狠狠色综合日日| 色综合久久99| 欧美一级日韩一级| 国产精品伦理一区二区| 亚洲国产一区二区在线播放| 捆绑调教美女网站视频一区| www.亚洲人| 欧美一卡二卡在线| 国产精品欧美综合在线| 日韩精品成人一区二区三区| 高清久久久久久| 欧美高清视频不卡网| 国产欧美精品国产国产专区| 午夜欧美视频在线观看| 国产98色在线|日韩| 91精品在线免费| 亚洲免费资源在线播放| 狠狠色丁香九九婷婷综合五月| 色综合久久88色综合天天免费| 日韩一卡二卡三卡国产欧美| 亚洲天堂a在线| 六月丁香综合在线视频| 91国产免费看| 国产精品免费丝袜| 久久精品国产精品亚洲精品| 在线视频一区二区免费| 丝袜亚洲另类丝袜在线| 色综合久久中文字幕综合网| 精品国产污网站| 五月婷婷色综合| 色94色欧美sute亚洲13| 欧美激情艳妇裸体舞| 久久99深爱久久99精品| 欧美中文字幕亚洲一区二区va在线| 国产午夜亚洲精品不卡| 日本视频中文字幕一区二区三区| 91免费版在线| 国产精品九色蝌蚪自拍| 国产成人精品在线看| 精品盗摄一区二区三区| 日日摸夜夜添夜夜添精品视频| 色一情一乱一乱一91av| 国产精品美女一区二区在线观看| 韩国三级中文字幕hd久久精品| 91精品国产综合久久香蕉麻豆| 亚洲一区二区美女| 91成人在线观看喷潮| 亚洲美女偷拍久久| eeuss鲁一区二区三区| 国产欧美综合色| 高清视频一区二区| 国产精品第一页第二页第三页| 国产高清在线精品| 久久精品在线观看|