bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

c++用戶自定義類型-創新互聯

c++用戶自定義類型
  • 結構
  • 枚舉

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

為梅州等地區用戶提供了全套網頁設計制作服務,及梅州網站建設行業解決方案。主營業務為網站建設、成都網站建設、梅州網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!結構

構建一種新類型的第一步通常是把所需的元素組織成一種數據結構。下面是一個 struct的示例:

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

這是Vector 的第一個版本,其中包含一個int 和一個 double*一個 Vector 類型的變量可以通過下述形式進行定義:

Vector v;

僅就v本身而言,它的用處似乎不大,因為v的 elem 指針并沒有指向任何實際的內容。為了讓它變得更有用,我們需要令v指向某些元素。例如,我們可以構造一個如下所示的Vector :

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

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

Vector 的一個簡單應用如下所示:

double read_and_sum(int s){//從cin 讀入s個整數,然后返回這些整數的和;其中,假定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;
}

顯然,在靈活性和優雅程度上我們的 Vector 與標準庫 vector 還有很大差距,其是Vector 的使用者必須清楚地知道它的所有細節。

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

class Vector{public:
	Vector(int s): elem{new double[s]}, sz{s}{} //構建一個Vector
	double& operator[](int i){return elem[i];} //通過下標訪問元素
	int size(){return sz;}
private:
	double* elem; //指向元素的指針
	int sz; //元素的數量
}

于是

Vector v(6);

總的來說,Vector 對象是一個“句柄”,它包含指向元素的指針 (elem)以及元素的數量(sz)。在不同 Vector 對象中元素的數量可能不同(本例是 6),即使同一個 Vector 對象在不同時刻也可能含有不同數量的元素 。不過,Vector 對象本身的大小永遠保持不變。這是 C++ 語言處理可變數量信息的一項基本技術:一個固定大小的句柄指向位于“別處”(即通過 new 分配的自由空間)的一組可變數量的數據

枚舉

c++提供的枚舉類型可通過關鍵字class來表明是強類型,例如:

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 的作用域之內,因此我們可以在不同的enum class 中重復使用這些枚舉值而不致引起混淆。例如,Color::red 是指 Color 的 red,它與Traffic light::red 顯然不同。
枚舉類型常用于描述規模較小的整數值集合。通過使用有指代意義的 (且易于記憶的)枚舉值名字可提高代碼的可讀性,降低出錯的風險。

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

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網頁題目:c++用戶自定義類型-創新互聯
文章源于:http://vcdvsql.cn/article46/ppchg.html

成都網站建設公司_創新互聯,為您提供外貿網站建設網站營銷企業建站移動網站建設App開發網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設