- 相關(guān)推薦
常用面試題目:關(guān)聯(lián)、聚合以及組合的區(qū)別
涉及到UML中的一些概念:關(guān)聯(lián)是表示兩個(gè)類的一般性聯(lián)系,比如“學(xué)生”和“老師”就是一種關(guān)聯(lián)關(guān)系;聚合表示has-a的關(guān)系,是一種相對(duì)松散的關(guān)系,聚合類不需要對(duì)被聚合類負(fù)責(zé),用空的菱形表示聚合關(guān)系
從實(shí)現(xiàn)的角度講,聚合可以表示為:
class A {…} class B { A* a; …..}
而組合表示contains-a的關(guān)系,關(guān)聯(lián)性強(qiáng)于聚合:組合類與被組合類有相同的生命周期,組合類要對(duì)被組合類負(fù)責(zé),采用實(shí)心的菱形表示組合關(guān)系
實(shí)現(xiàn)的形式是:
class A{…} class B{ A a; …}
拓展:
指針的指針
指針的指針看上去有些令人費(fèi)解,
常用面試題目:關(guān)聯(lián)、聚合以及組合的區(qū)別
。它們的聲明有兩個(gè)星號(hào)。例如:char ** cp;
如果有三個(gè)星號(hào),那就是指針的指針的指針,四個(gè)星號(hào)就是指針的指針的指針的指針,依次類推。當(dāng)你熟悉了簡單的例子以后,就可以應(yīng)付復(fù)雜的情況了。當(dāng)然,實(shí)際程序中,一般也只用到 二級(jí)指針,三個(gè)星號(hào)不常見,更別說四個(gè)星號(hào)了。
指針的指針需要用到指針的地址。
char c='A';
char *p=&c;
char **cp=&p;
通過指針的指針,不僅可以訪問它指向的指針,還可以訪問它指向的指針?biāo)赶虻臄?shù)據(jù),
資料共享平臺(tái)
《常用面試題目:關(guān)聯(lián)、聚合以及組合的區(qū)別》(http://www.szmdbiao.com)。下面就是幾個(gè)這樣的例子:char *p1=*cp;
char c1=**cp;
你可能想知道這樣的結(jié)構(gòu)有什么用。利用指針的指針可以允許被調(diào)用函數(shù)修改局部指針變量和處理指針數(shù)組。
void FindCredit(int **);
main()
{
int vals[]={7,6,5,-4,3,2,1,0};
int *fp=vals;
FindCredit(&fp);
printf(%d\n,*fp);
}
void FindCredit(int ** fpp)
{
while(**fpp!=0)
if(**fpp<0) break;
else (*fpp)++;
}
首先用一個(gè)數(shù)組的地址初始化指針fp,然后把該指針的地址作為實(shí)參傳遞給函數(shù)FindCredit()。FindCredit()函數(shù)通過表達(dá)式**fpp間接地得到數(shù)組中的數(shù)據(jù)。為遍歷數(shù)組以找到一個(gè)負(fù)值,F(xiàn)indCredit()函數(shù)進(jìn)行自增運(yùn)算的對(duì)象是調(diào)用者的指向數(shù)組的指針,而不是它自己的指向調(diào)用者指針的指針。語句(*fpp)++就是對(duì)形參指針指向的指針進(jìn)行自增運(yùn)算的。但是因?yàn)?運(yùn)算符高于++運(yùn)算符,所以圓括號(hào)在這里是必須的,如果沒有圓括號(hào),那么++運(yùn)算符將作用于二重指針fpp上。
【常用面試題目:關(guān)聯(lián)、聚合以及組合的區(qū)別】相關(guān)文章:
談?wù)劽嬖囍凶畛柕念}目以及如何對(duì)答為妥02-27
經(jīng)典的面試問題和以及最佳回答10-22
英語面試常見問題以及回答07-26
上海奧美面試題目09-22
銀行面試題目及答案09-19
最常見的面試問題以及回答參考07-17
宣傳部面試題目09-30
金光紙業(yè)面試筆試題目09-29
C++面試筆試題目07-16