c++的第乙個要學習的特性,結構體中可以新增函式。這裡operator是關鍵字表示操作符,這是對操作符的過載,即重新給這個操作符下定義(該結構體下)。參數列中的const表示不會對s1,s2指向的內容修改,而最後const對函式的修飾表示保證函式執行時不會對類或結構內部的變數進行更改。方便後期的維護。
辨析下面兩句的區別:
char chs = "123";
const char* ch1 = chs;
char* const ch2 = chs;
ch1說的是 chs的內容不會被改變
ch2則是指 ch2指向的內容不會改變,即他就是指向chs
這個要說的是命名空間,因為有可能乙個程式有多個人來編寫,這些人可能會寫出名稱一樣的函式,為了避免衝突而又不進行大範圍的更改,產生了命名空間的概念,不同的空間可以有同名的函式或類等等,只要在呼叫時宣告是哪個命名空間裡的就可以,使用using表示預設的命名空間,這樣在呼叫時就可以省略對命名空間的宣告了。
這是模板類的用法。template表示乙個模板,template修飾著緊接著的下乙個類或結構或函式。因為有很多事情基礎結構是一樣的,只是由於物件的型別不同而造成了些微的差異,我們就可以把這件事抽象成乙個模板類,在使用時根據實際需要表明他的型別,此時的特定型別如int就會替換模板中的type。
上圖中是乙個指標類的簡單模板,首先private不可引用是預設行為,指的是會產生乙個t型別的指標。public的兩個建構函式結合main中的呼叫來看,這裡出現了=的乙個語法糖,它不是賦值而是在傳引數,把&num給了intptr,那麼回到類中由於有引數會呼叫myptr(t* p)。
再接下來過載了*運算子,首先注意這個函式的返回值是引用,引用表示「在原址上進行操作」,確保了返回值不會是乙個備份變數,如果是t*,那麼在呼叫時則會是*(*intptr) = 1。
宣告myptr類可以有效的避免malloc/new之後忘記free/delete的問題,解決方案就是用構析函式,~myptr表示一旦變數被銷毀之後的操作。
這是乙個更複雜一些的模板,接受三個類,產生的是乙個函式指標。
乙個大程式:
#include #include #define null 0
namespace lll
else
}static int getcount(int addr)
templatestatic int getcount(t* ptr)
static void modifycount(int addr, int count)
templatestatic void modifycount(t* ptr, int count)
static void addcount(int addr)
templatestatic void addcount(t* ptr)
templatestatic void subcount(t* ptr)
else
}templatefriend class myptr;
}; std::map_myptr::refcount = std::map();
templateclass myptr
return myptr(p);
}#pragma region 構造/析構函式
public:
myptr()
myptr(t* p)
myptr(myptr& p)
~myptr()
#pragma endregion
#pragma region 運算子
public:
myptr& operator =(t* p)
return *this;
} myptr& operator =(myptr& p)
return *this;
} t& operator *()
t* operator ->()
myptroperator +(int offset)
myptroperator -(int offset)
int operator - (myptr& p)
#pragma endregion
};}class cl
~cl()
void func() };
int main()
C 第一彈 命名空間
在c 中,變數 函式 類都將存在於全域性作用域中,在程式設計師使用各種各樣的c 庫時,可能會發生衝突,使用命名空間的作用就是對識別符號的名稱進行本地化,以避免命名衝突或網域名稱汙染。格式 namespace 命名空間的名字 namespace n1 2 命名空間的巢狀 指在乙個命名空間中在定義乙個命...
菜鳥部落格第一彈
隨著乙個多月的大學生活結束,今天終於開始了畢業的第一天工作。請了40多天的假,本來以為工作會悲劇的。但到公司同事和領導的關心使我擔心的小心感到了溫暖。早就想實現這個計畫,想在正式工作的時候寫部落格,也就是想記錄下每天的工作和每天的心情。寫博主要是記下這剛開始艱苦的歲月,不求對別人幫助,本人是菜鳥,歡...
oracle學習第一彈
每當我們建立資料庫例項的時候,就會自動的建立三個使用者 sys使用者 超級管理員,許可權最大 system使用者 系統管理員 scott使用者 普通使用者 有三種方式登入oracle資料庫 1.命令列sqlplus 2.sql developer 3.企業管理器,通過web訪問 sql plus是o...