C 模版使用用例

2021-07-26 17:06:57 字數 3113 閱讀 6745

#include #include "string.h"

#include "stdio.h"

#include "errno.h"

#include "syslog.h"

#include "unistd.h"

#include "sys/time.h"

#include #include #include #include #include "main.h"

using namespace std;

#define offsetof(s,m) ( (size_t) &( ( (s*)null )->m ))

#define file_name "./1.gz"

//模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義乙個模板。

//類模板的定義

templateclass a; //定義帶有乙個類模板型別形參t的類a

templateclass b; //定義帶有兩個類模板型別形參t1,t2的類b

//定義類模板的預設型別形參,預設型別形參不適合於函式模板。

templateclass d; //定義帶預設型別形參的類模板。這裡把t2預設設定為int型。

//templateclass e{}; //錯誤,為t1設了預設型別形參則t1後面的所有形參都必須設定認默值。

//以下為非型別形參的定義

//非型別形參只能是整型,指標和引用,像double,string, string **這樣的型別是不允許的。但是double &,double *物件的引用或指

//針是正確的。

templateclass ci; //定義模板的非型別形參,形參為整型

templateclass cip;

template* m> class cc; //定義模板的模板型別形參,形參為int型的類a的物件的指標。

templateclass cd; //定義模板的非型別形參,形參為double型別的引用。

class e{}; templateclass ce{}; //非型別模板形參為物件的引用。

//以下非型別形參的宣告是錯誤的。

//templateclass cc{}; //錯誤,物件不能做為非型別形參,非型別模板形參的型別只能是物件的引用或指標。

//templateclass cc{}; //錯誤,非型別模板的形參不能是double型別,可以是double的引用。

//templatem>class cc{}; //錯誤,非型別模板的形參不能是物件,必須是物件的引用或指標。這條規則對於模板型參

//也不例外。

//在類模板外部定義各種類成員的方法,

//typeid(變數名).name()的作用是提取變數名的型別,如int a,則cout//a<2> m; //錯誤,對類模板不存在實參推演問題,類模板必須在尖括號中明確指出其型別。

//類模板呼叫例項

ama; //輸出"class a goucao int"建立int型的類模板a的物件ma。

bmb; mb.g(); //輸出"class b g() int int"建立類模板b的物件mb,並把型別形參t1和t2設計為int

//非型別形參的呼叫

//呼叫非型別模板形參的實參必須是乙個常量表示式,即他必須能在編譯時計算出結果。任何區域性物件,區域性變數,區域性物件的位址,區域性

//變數的位址都不是乙個常量表示式,都不能用作非型別模板形參的實參。全域性指標型別,全域性變數,全域性物件也不是乙個常量表示式,不能

//用作非型別模板形參的實參。

//全域性變數的位址或引用,全域性物件的位址或引用const型別變數是常量表示式,可以用作非型別模板形參的實參。

//呼叫整型int型非型別形參的方法為名為ci,宣告形式為templateclass ci

citest;//正確,數值r是乙個int型常量,輸出"class ci g() int"

const int a2=3; cimci1; mci1.g(); //正確,因為a2在這裡是const型的常量。輸出"class ci g() int"

//cimci; //錯誤,int型變數a是區域性變數,不是乙個常量表示式。

//cimci; //錯誤,全域性int型變數e也不是乙個常量表示式。

//呼叫int&型非型別形參的方法類名為cip,宣告形式為templateclass cip

cipmcip; //正確,對全域性變數的引用或位址是常量表示式。

//cipmcip1; //錯誤,區域性變數的引用或位址不是常量表示式。

//呼叫double*型別的非類形形參類名為cd,宣告形式為templateclass cd

cdmcd; //正確,全域性變數的引用或位址是常量表示式。

//cdmcd1; //錯誤,全域性變數指標不是常量表示式。 ----------------------------- 重點

double dd=3.3; //錯誤,區域性變數的位址不是常量表示式,不能用作非型別形參的實參

//cdmcd; //錯誤,非型別形參雖允許一些轉換,但這個轉換不能實現。------------------------- 重點

//呼叫模板型別形參物件a*的方法類名為cc,聲名形式為template* m> class cc

ccmcc; mcc.g(); //正確,全域性物件的位址或者引用是常量表示式

//ccmcc; //錯誤,區域性變數的位址或引用不是常量表示式。

//ccmcc2; //錯誤,全域性物件的指標不是常量表示式。

//呼叫非型別形參e&物件的引用的方法類名為ce。宣告形式為templateclass ce

e me1; //cemce1; //錯誤,區域性物件不是常量表示式 --------------------------------- 重點

cemce; //正確,全域性物件的指標或引用是常量表示式。

//非型別形參的轉換示例,類名為ci

//非型別形參允許從陣列到指標,從函式到指標的轉換,const修飾符的轉換,提公升轉換,整值轉換,常規轉換。

const short s=3; cimci4;//正確,雖然short型和int不完全匹配,但這裡可以將short型轉換為int型------------------------- 重點

}

Linux awk 使用用例

環境 centos 鑑於語句描述蒼白無力,用例子直接說明。檔案內容 zilzhang 19881110 jiangxi 18 film zhagnsan 21321 sichuan 100 card 1.列印整行 awk mytxt zilzhang 19881110 jiangxi 18 film...

使用用例捕獲需求

1 需求分析 用例技術 系統分析 ooa 系統設計 ood 系統實現 oop 2 用例的主要作用是 用來捕獲系統的高層次 high level 使用者功能性需求 3 用例從使用者的視角描述了在邏輯上相對完整的乙個功能流程。用例演示了人們如何使用系統。4 用例 vs 功能列表。5 用例最主要的價值在於...

使用用例捕獲需求

在使用uml的整個軟體開發過程中,用例處於乙個中心地位。1 工作量的預估需要依據當前發現的用例。2 介面 ui 是在用例的輔助下進行設計 3 很多類是根據用例來發現的 4 用例的場景描述是建立時序圖和協作圖的依據。6 測試例項是根據用例來生成的 7 整個開發的管理和任務分配,需要依據用例來進行組織 ...