内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

c++用戶自定義類(lèi)型-創(chuàng)新互聯(lián)

c++用戶自定義類(lèi)型
  • 結(jié)構(gòu)
  • 類(lèi)
  • 枚舉

可以通過(guò)基本類(lèi)型,const修飾符,和聲明運(yùn)算符 (例如&,*,[])構(gòu)造出的類(lèi)型稱為內(nèi)置類(lèi)型 ( built-in type)。C++ 語(yǔ)言的內(nèi)置類(lèi)型及其操作的集合非常豐富,不過(guò)相對(duì)來(lái)說(shuō)更偏重底層編程。這些內(nèi)置類(lèi)型的優(yōu)點(diǎn)是能夠直接有效地展現(xiàn)出傳統(tǒng)計(jì)算機(jī)硬件的特性,但是并不能向程序員提供便于書(shū)寫(xiě)高級(jí)應(yīng)用程序的上層特性。為此,C++語(yǔ)言擴(kuò)充了這些內(nèi)置類(lèi)到和操作,提供了一套成熟的抽象機(jī)制 (abstractionmechanism),程序員可以使用這套機(jī)制實(shí)現(xiàn)其所需的上層功能。C++ 抽象機(jī)制的目的主要是讓程序員能夠設(shè)計(jì)并實(shí)現(xiàn)他們自己的數(shù)據(jù)類(lèi)型,這些類(lèi)型具有恰當(dāng)?shù)谋憩F(xiàn)形式和操作,程序員可以簡(jiǎn)單優(yōu)雅地使用它們。為了與內(nèi)置類(lèi)型區(qū)別開(kāi)來(lái),我們把利用 C++ 的抽象機(jī)制構(gòu)建的新類(lèi)型稱為用戶自定義類(lèi)型(user-defined types),諸如類(lèi)和枚舉等等

為梅州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及梅州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、梅州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!結(jié)構(gòu)

構(gòu)建一種新類(lèi)型的第一步通常是把所需的元素組織成一種數(shù)據(jù)結(jié)構(gòu)。下面是一個(gè) struct的示例:

struct Vector {int sz; //元素的數(shù)量
    double* elem; //指向元素的指針
}

這是Vector 的第一個(gè)版本,其中包含一個(gè)int 和一個(gè) double*一個(gè) Vector 類(lèi)型的變量可以通過(guò)下述形式進(jìn)行定義:

Vector v;

僅就v本身而言,它的用處似乎不大,因?yàn)関的 elem 指針并沒(méi)有指向任何實(shí)際的內(nèi)容。為了讓它變得更有用,我們需要令v指向某些元素。例如,我們可以構(gòu)造一個(gè)如下所示的Vector :

void vector_init(Vector& v, int s){v.elem =new double[s]; //分配一個(gè)數(shù)組,它包舍s個(gè)double值
	v.sz = s;
}

也就是說(shuō),v的elem 成員被賦予了一個(gè)由 new 運(yùn)算符生成的指針,而 sz 成員的值則是元素的個(gè)數(shù)。Vector& 中的符號(hào) & 指定我們通過(guò)非常量引用的方式傳遞 v,這樣 vector_init() 就能修改傳入其中的向量了。
new運(yùn)算符從一塊名為自由存儲(chǔ) (free store)(又稱為動(dòng)態(tài)內(nèi)存(dynamic memory)或堆(heap)的區(qū)域中分配內(nèi)存。

Vector 的一個(gè)簡(jiǎn)單應(yīng)用如下所示:

double read_and_sum(int s){//從cin 讀入s個(gè)整數(shù),然后返回這些整數(shù)的和;其中,假定s 是正的
	Vector v;
	vector_init(v, s);
	for (int i=0; i!=s; ++i)
		cin >>v.elem[i];
		
	double sum = 0;
	for (int i = 0; i != s; ++i)
		sum += v.elem[i];
	return sum;
}

顯然,在靈活性和優(yōu)雅程度上我們的 Vector 與標(biāo)準(zhǔn)庫(kù) vector 還有很大差距,其是Vector 的使用者必須清楚地知道它的所有細(xì)節(jié)。

類(lèi)

對(duì)于用戶自定義類(lèi)型來(lái)說(shuō),為了將其所有屬性捏合在一起,形成一個(gè)“真正的類(lèi)型”,在表示形式和操作之間建立緊密的聯(lián)系還是很有必要的。特別是,我們常常希望自己構(gòu)建的類(lèi)型易于使用和修改,數(shù)據(jù)的使用具有一致性,并且表示形式最好對(duì)用戶是不可見(jiàn)的。此時(shí),最理想的做法就是把類(lèi)型的接口(所有代碼都可使用的部分) 與其實(shí)現(xiàn)(對(duì)其他不可訪問(wèn)的數(shù)據(jù)具有訪問(wèn)權(quán)限)分離開(kāi)來(lái)。在 C++ 中,實(shí)現(xiàn)上述目的的語(yǔ)言機(jī)制被稱為類(lèi)class)。類(lèi)含有一系列成員 (member),可能是數(shù)據(jù)、函數(shù)或者類(lèi)型。類(lèi)的 public 成員定義該類(lèi)的接口,private 成員則只能通過(guò)接口訪問(wèn)。例如:

class Vector{public:
	Vector(int s): elem{new double[s]}, sz{s}{} //構(gòu)建一個(gè)Vector
	double& operator[](int i){return elem[i];} //通過(guò)下標(biāo)訪問(wèn)元素
	int size(){return sz;}
private:
	double* elem; //指向元素的指針
	int sz; //元素的數(shù)量
}

于是

Vector v(6);

總的來(lái)說(shuō),Vector 對(duì)象是一個(gè)“句柄”,它包含指向元素的指針 (elem)以及元素的數(shù)量(sz)。在不同 Vector 對(duì)象中元素的數(shù)量可能不同(本例是 6),即使同一個(gè) Vector 對(duì)象在不同時(shí)刻也可能含有不同數(shù)量的元素 。不過(guò),Vector 對(duì)象本身的大小永遠(yuǎn)保持不變。這是 C++ 語(yǔ)言處理可變數(shù)量信息的一項(xiàng)基本技術(shù):一個(gè)固定大小的句柄指向位于“別處”(即通過(guò) new 分配的自由空間)的一組可變數(shù)量的數(shù)據(jù)。

枚舉

c++提供的枚舉類(lèi)型可通過(guò)關(guān)鍵字class來(lái)表明是強(qiáng)類(lèi)型,例如:

enum class Color{red, blue, greeen};
enum class Traffic_light{green, yellow, red};

Color col = Color::red;
Traffic_light light = Traffic_light::red;

其中枚舉值(如red)位于其enum class 的作用域之內(nèi),因此我們可以在不同的enum class 中重復(fù)使用這些枚舉值而不致引起混淆。例如,Color::red 是指 Color 的 red,它與Traffic light::red 顯然不同。
枚舉類(lèi)型常用于描述規(guī)模較小的整數(shù)值集合。通過(guò)使用有指代意義的 (且易于記憶的)枚舉值名字可提高代碼的可讀性,降低出錯(cuò)的風(fēng)險(xiǎn)。

enum 后面的 class 指明了枚舉是強(qiáng)類(lèi)型的,且它的枚舉值位于指定的作用域中。不同的 enum class 是不同的類(lèi)型,這有助于防止對(duì)常量的意外誤用。在上面的例子中,我們不能混用 Traffic light和 Color 的值

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁(yè)題目:c++用戶自定義類(lèi)型-創(chuàng)新互聯(lián)
文章源于:http://www.rwnh.cn/article46/ppchg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、企業(yè)建站移動(dòng)網(wǎng)站建設(shè)、App開(kāi)發(fā)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
土默特左旗| 新闻| 广宁县| 申扎县| 苏尼特左旗| 台北县| 太仆寺旗| 湟源县| 鄢陵县| 浦东新区| 南岸区| 健康| 九龙坡区| 大关县| 巴彦县| 清徐县| 乐东| 扶沟县| 天峨县| 霞浦县| 盈江县| 调兵山市| 关岭| 故城县| 凉城县| 彩票| 乐至县| 滁州市| 贞丰县| 托克托县| 桐梓县| 镇宁| 茌平县| 托克逊县| 资兴市| 正蓝旗| 遵义市| 恩施市| 上林县| 凤冈县| 杭锦后旗|