日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

c/c++ accumulation

發(fā)布時(shí)間:2023/12/9 c/c++ 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c/c++ accumulation 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

非const引用只能綁定到與該引用同類型的對(duì)象;

const引用則可以綁定到不同但相關(guān)的類型的對(duì)象或綁定到右值。

?


因?yàn)轭^文件包含在多個(gè)源文件中,所以不應(yīng)該含有變量或函數(shù)的定義。這個(gè)規(guī)則有三個(gè)例外,頭文件可以定義類、值在編譯時(shí)就已知道得const對(duì)象和inline函數(shù)。這些實(shí)體可在多個(gè)源文件中定義,只要每個(gè)源文件中的定義是相同的。

?

?

C++ const變量在實(shí)際編程中起著非常重要的作用,當(dāng)我們?cè)诼暶鲿r(shí),需要對(duì)其加初始化,因?yàn)槟J(rèn)的內(nèi)部連接都必須被初始化。

?

?

指針和引用:

它們之間有兩個(gè)重要的區(qū)別。第一個(gè)區(qū)別在于引用總是指向某個(gè)對(duì)象:定義引用時(shí)沒(méi)有初始化對(duì)象是錯(cuò)誤的。第二個(gè)重要的區(qū)別則是賦值行為的差異:給引用賦值修改的是該引用做關(guān)聯(lián)的對(duì)象,而并不是使引用與另一個(gè)對(duì)相關(guān)聯(lián)。引用一經(jīng)初始化,就始終指向同一個(gè)特定對(duì)象(這就是為什么引用必須在定義時(shí)初始化的yuanyin)

?

?

typedef和#define的區(qū)別

1.可以用其他類型說(shuō)明符對(duì)宏類型名進(jìn)行擴(kuò)展,但對(duì)typedef所定義的類型名卻不能這樣做。

例: #define peach int

unsigned peach i; ?//ok

typedef int banana;

unsigned banana i; //error,illegal

2.在連續(xù)幾個(gè)變量的聲明中,用typedef定義的類型能夠保證聲明中所有的變量均為同一種類型,而用#define定義的類型則無(wú)法保證

例: #define int_ptr int*

int_ptr chalk, cheese; //chalk is int*, but cheese is int

typedef char * char_ptr;

char_ptr Bentley, Rolls_Royce; //both Bentley and Rolls_Royce are char *

注意c++中: typedef string *pstring

const pstring cstr;

上面聲明中cstr為指向string類型對(duì)象的const指針,相當(dāng)于srting * const cstr;

?

?

int *ip[4]; //array of pointers to int

int (*ip)[4]; //pointer to an array of 4 ints

?

?

c++中規(guī)定了計(jì)算其操作數(shù)次序的操作符有:&&,||(這兩個(gè)操作符的操作數(shù)計(jì)算順序?qū)е铝硕搪番F(xiàn)象),?:(條件操作符)和,(逗號(hào))。

?

?

const引用比非const引用更加靈活,因?yàn)閏onst引用能接受const類型、非const類型、右值以及其他可轉(zhuǎn)換成該類型的值,例如short a = 0;?const int& b = a;,而非const型引用只能接受和自己類型完全相同的值,不能接受其他類型、const引用或右值。

?

沒(méi)有默認(rèn)構(gòu)造函數(shù)的類類型的成員,以及const或引用類型的成員,不管是哪種類型,都必須在構(gòu)造函數(shù)初始化列表中進(jìn)行初始化。

?

?

?

c++容器中的元素不能是引用類型,輸入輸出標(biāo)準(zhǔn)庫(kù)類型和auto_ptr類型。

?

函數(shù)的參數(shù)聲明為const型的引用或指針的好處是調(diào)用該函數(shù)時(shí)既可以給該參數(shù)傳遞const的引用或指針,也可以傳遞非const型的引用或指針,而如果參數(shù)聲明為非const型,則調(diào)用函數(shù)時(shí)只能為其傳遞非const型的引用和指針。

?

虛函數(shù)的作用是實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,也就是在程序的運(yùn)行階段動(dòng)態(tài)地選擇合適的成員函數(shù),在定義了虛函數(shù)后,可以在基類的派生類中對(duì)虛函數(shù)重新定義,在派生類中重新定義的函數(shù)應(yīng)與虛函數(shù)具有相同的形參個(gè)數(shù)和形參類型,以實(shí)現(xiàn)統(tǒng)一的接口,不同定義過(guò)程。如果在派生類中沒(méi)有對(duì)虛函數(shù)重新定義,則它繼承其基類的虛函數(shù)。

?

class Base {
public:
virtual int fcn(){return 0;}
};

class D1 : public Base {
public:
// hides fcn in the base; this fcn is not virtual
int fcn(int a){return a;} // parameter list differs from fcn in Base
// int fcn(){return 1;}
// D1 inherits definition of Base::fcn()
};

class D2 : public D1 {
public:
int fcn(int a){return a;} // nonvirtual function hides D1::fcn(int)
int fcn(){return 2;} // redefines virtual fcn from Base
};

D1中的int fcn(int a)只是對(duì)外屏蔽了Base類里的fcn(屏蔽接口),但實(shí)際D1類中依然保存了Base類里的fcn的實(shí)現(xiàn)(未屏蔽實(shí)現(xiàn)),所以D2才可以重定義Base類的fcn實(shí)現(xiàn)多態(tài)。

D1 d1obj;

D1 *pd1 = &d1obj;

pd1->fcn(1): //OK

pd1->Base::fcn(): //OK

pd1->fcn(): //error: no matching function for call to 'D1::fcn()'|(屏蔽接口)

自動(dòng)化
自動(dòng)化允許一個(gè)應(yīng)用程序驅(qū)動(dòng)另外一個(gè)應(yīng)用程序。驅(qū)動(dòng)應(yīng)用程序稱為自動(dòng)化客戶端,被驅(qū)動(dòng)的應(yīng)用程序稱為自動(dòng)化服務(wù)器或者自動(dòng)化組件。。

總結(jié)

以上是生活随笔為你收集整理的c/c++ accumulation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。