一、類(lèi)型轉(zhuǎn)換
1、強(qiáng)制類(lèi)型轉(zhuǎn)換::類(lèi)型不同,而且不屬于基本數(shù)據(jù)類(lèi)型(int double...)時(shí),經(jīng)常需要強(qiáng)制類(lèi)型轉(zhuǎn)換
①、顯示強(qiáng)制類(lèi)型轉(zhuǎn)換
TYPE b = (TYPE) a;
C++中強(qiáng)制類(lèi)型轉(zhuǎn)換函數(shù)有4個(gè):
const_cast(用于去除const屬性),
static_cast(用于基本類(lèi)型的強(qiáng)制轉(zhuǎn)換),
dynamic_cast(用于多態(tài)類(lèi)型之間的類(lèi)型轉(zhuǎn)換),
::dynamic_cast < type-id > ( expression ) 該運(yùn)算符把expression轉(zhuǎn)換成type-id類(lèi)型的對(duì)象。Type-id必須是類(lèi)的指針、類(lèi)的引用或者void*; 如果type-id是類(lèi)指針類(lèi)型,那么expression也必須是一個(gè)指針,如果type-id是一個(gè)引用,那么expression也必須是一個(gè)引用。 dynamic_cast主要用于類(lèi)層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換,還可以用于類(lèi)之間的交叉轉(zhuǎn)換。
reinterpreter_cast(用于不同類(lèi)型之間的指針之間的轉(zhuǎn)換,最常用的就是不同類(lèi)型之間函數(shù)指針的轉(zhuǎn)換)。
2、隱式強(qiáng)制類(lèi)型轉(zhuǎn)換
自動(dòng)類(lèi)型轉(zhuǎn)換分兩種情況:
①,不同類(lèi)型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),系統(tǒng)會(huì)自動(dòng)將運(yùn)算優(yōu)先級(jí)別低的轉(zhuǎn)換成級(jí)別高的,結(jié)果和運(yùn)算級(jí)別高的數(shù)據(jù)類(lèi)型一樣。
②,賦值運(yùn)算符兩邊類(lèi)型不一樣時(shí),系統(tǒng)會(huì)自動(dòng)將右側(cè)表達(dá)式的類(lèi)型轉(zhuǎn)換成左側(cè)的變量類(lèi)型,然后再賦值
3、不允許的經(jīng)過(guò)轉(zhuǎn)換構(gòu)造函數(shù)進(jìn)行的隱式轉(zhuǎn)換的發(fā)生。explicit 不能AAA = XXX
二、靜態(tài)static
1 靜態(tài)數(shù)據(jù)成員的類(lèi)型可以是其所屬類(lèi)而非static 數(shù)據(jù)成員只能被聲明為該類(lèi)的對(duì)象的指針或引用例如
class Bar {
public:
private:
static Bar mem1; // ok
Bar *mem2; // ok
Bar mem3; // 錯(cuò)誤
};
2 靜態(tài)數(shù)據(jù)成員可以被作為類(lèi)成員函數(shù)的缺省實(shí)參而非static 成員不能例如
extern int var;
class Foo {
private:
int var;
static int stcvar;
public:
// 錯(cuò)誤: 被解析為非 static 的 Foo::var
// 沒(méi)有相關(guān)的類(lèi)對(duì)象
int mem1( int = var );
// ok: 解析為 static 的 Foo::stcvar
// 無(wú)需相關(guān)的類(lèi)對(duì)象
int mem2( int = stcvar );
// ok: int var 的全局實(shí)例
int mem3( int = ::var );
};
靜態(tài)成員函數(shù)::靜態(tài)成員函數(shù)的聲明除了在類(lèi)體中的函數(shù)聲明前加上關(guān)鍵字static 以及不能聲明為const 或volatile 之外與非靜態(tài)成員函數(shù)相同
(1)、出現(xiàn)在類(lèi)體外的函數(shù)定義不能指定關(guān)鍵字static
(2)、靜態(tài)成員函數(shù)沒(méi)有this 指針
(3)、訪問(wèn)時(shí)用類(lèi)::標(biāo)識(shí)
三、修飾符
1、const
①、對(duì)類(lèi)型 限定為常量
②、作為函數(shù)參數(shù) 限定參數(shù)不可改變或成員變量不變
2、typedef
①、類(lèi)型的類(lèi)別,不是簡(jiǎn)單的宏替換
②、定義結(jié)構(gòu)體struct放在前面
3、static
.........
4、inline
內(nèi)聯(lián)函數(shù):用來(lái)消除函數(shù)調(diào)用時(shí)的時(shí)間開(kāi)銷(xiāo)。它通常用于頻繁執(zhí)行的函數(shù)。 一個(gè)小內(nèi)存空間的函數(shù)非常受益。
5、extern
聲明函數(shù)或者變量,讓在另一文件中使用
6、volatile
每次使用時(shí)重新讀取值
①. 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)
②. 一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automatic variables)
③. 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量
posted on 2011-11-30 20:32
Yu_ 閱讀(406)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
C/C++