常用的:#include
#include中
定義了流控制符,來控制資料的輸出格式
dec hex oct 分別為十進位制 十六進製制 八進位制
setw(n)輸出域寬為n
setfill(c)在給定的輸出寬度內,填充字元c
........等
例:cout如:上面的第二句,同樣以十六進製制嗎,填充『#』的方式輸出。
內斂函式 inline
:呼叫這樣的函式時,把**直接插入到呼叫點,而沒有程式跳轉,返回一系列問題了
這樣的函式中,不能有複雜的語句 如:switch while,不能遞迴
一般只有1~5行語句的小函式
過載函式:(
對於一些具有同一功能的函式,但函式引數不同)
即,可以定義一些函式名相同的函式,但至少形參的個數,型別或順序上不同。
在呼叫時,傳入相應的實參,系統就可以和傳入的實參分辯,呼叫相應的正確的函式!
預設引數的函式
:p78 :不傳入引數的話,就用預設引數!! 例:
#include<>
void sum(int num=10);//如果有函式說明,預設引數就在說明中提供
void main()
sum(100);//用100傳入
sum();//使用預設引數
void sum(int num)//這裡就不用提供預設引數了
關於const指標:
1.指向唯讀資料的指標變數!
const int *p;
即:指標指向的資料不能寫入(改變),但指標可以改變指向!
2.指標常量
char *const p="adcfdg";
用這種方法定義的指標變數,指標指向不能改變,但指標所指的資料內容可以改變。
如:(接上) p="xtyz" //錯的,它改變了指標的指向!
(接上) *p='s'; //對的(多了個*),只是改變了指向內容的值!
3.指向常量的指標常量
顧名思義:指向不能改變,指的內容也不能改變
引用:int a ;
int &ra=a;
從此ra是a的別名!!
引用作為函式的引數:
void swap(int &p1,int &p2)
呼叫函式,實參傳給兩個引用,函式中對p1,p2的操作就是直接對兩個實參的操作!
注意:p1,p2不會分配記憶體。而用一般變數傳遞函式,會分配記憶體!
有關記憶體分配:
看例子:
#include
#include
int *number,*p,*q;
number=new int[100];//分配乙個有100個int型元素的陣列!!!!
p=new int(11);//分配乙個int型的記憶體空間,初值為11
q=(int*)malloc(10*sizeof(int));
if(nmber==null||p=null||q==null)
else ;
delete number;//注意這個寫法!!!
delete p;
free(q);
建構函式:
其在類中,且函式名與類名相同,用於在物件定義時,自動被呼叫給物件初始化。 例:
class person
private:.......
public:
person(***,***,***,***);
void person::person(***,***,***,***)
//給相應的資料成員賦值
void main()
person obj("zoushuai",***,***,***);//定義物件,帶上初始值。
//之後,就定義並生成物件obj,然後自動呼叫建構函式person.再將初始值傳遞給建構函式相應的形參!,最後執行構造
//函式體,將相應的值附給相應的資料成員!!!
析構函式:
同建構函式(為物件分配相應資源)功能相反,析構函式用來釋放之前分配的資源!
函式如下:其被系統自動呼叫!如果在類的物件中沒有分配動態記憶體(new),可以用系統提供的預設的析構函式.(如果程式設計師在類中,沒有為類提供析構函式,就會預設生成乙個。你看不到,但存在!)。如果有!:則必須為該類提供析構函式以完成清理工作(delete)!
~類名()
//函式體
利用初始化表對常量資料成員或引用成員提供初值!
例:class silly
public:
silly()//這樣的建構函式是錯誤的!
ten=10;
refi=i;
protected:
const int ten;//常量資料成員
int &refi;//引用refi
上面的是錯誤的:因為,在建構函式執行之前,物件結構已經建立(已生成),資料成員已存在,而且,ten是const唯讀的! refi為引用!在建構函式內是不能在對其指派新值的!
但可以這樣:
在類外定義時:(在類內的public中即寫:silly();實現則在類外!如下)
silly::silly():ten(123),refi(i)//資料成員名(值),資料成員名(值),。。。。。。。 {}
繼承與派生:原來類的程式**可通過繼承而在新類中得到重用。
在基類的基礎上定義其派生類的定義形式:
class 派生類名(自定): 訪問方式 基類名
//即,在基類的基礎上可以新增新的成員
「訪問方式」即繼承方式 可以使private(私有繼承)和public(共有繼承) ,如果省略則是private
基類與派生類的關係
按public方式繼承時:基類中的共有成員和保護成員在派生類中不變
按private方式繼承時:基類中的共有成員和保護成員在派生類中都為私有成員
基類中的私有成員在派生類中是不可訪問的!!!!!!!!!!!!!
基類的建構函式是不會被繼承的!!
所以,在設計派生類的物件時,派生類的建構函式除初始化其自身定義的資料成員外,還必須對基類中的資料成員進行初始化(即還要呼叫基類的建構函式!!!)
派生類名::派生類建構函式名(參數列):基類建構函式名(參數列)
注:派生類建構函式的引數中包括引數的型別和引數名,而基類建構函式的引數中只有引數名!而且這些引數必須**於派生類建構函式名後面括號後的引數(即要在派生類建構函式參數列中定義)。
多重繼承:
class 派生類名:訪問方式 基類名1,訪問方式 基類名2......
在多重繼承下,系統首先執行各基類的建構函式,再是派生類的。。。。。。。。。
虛基類:
它是這樣的:它雖然被乙個派生類間接地多次繼承,但派生類卻只繼承乙份該基類的成員。
將乙個基類宣告為虛基類:
class 派生類名: virtual 訪問方式 基類名
虛函式:
因為用基類指標指向公有派生類物件,指標僅能看到派生類中的基類部分。但是,如果做以下改變。能訪問的就不同了。
虛函式的定義:
class 類名
。。。。。。 }
當乙個類的成員函式宣告為虛函式後(如上),就可以在該類的派生類中定義與其基類虛函式原型相同的函式(函式名,返回型別,引數個數等完全相同)(雖然沒有加上關鍵字virtual,都將被視為虛函式)。這時,當用基類指標指向這些派生類物件時,系統會在程式執行過程中,動態的自動選擇函式,從而實現了執行時的多型性。(當通過基類指標多次呼叫虛函式時,由於指標所指向物件的不同,而呼叫不同物件所屬類的虛函式)。
純虛函式:
純虛函式的宣告如下:
virtual 函式原型=0;
純虛函式 是只在基類中宣告但未給出具體的函式的實現,因此,用帶有純虛函式的基類中派生出的派生類,都必須定義與純虛函式同名的過載函式。(這樣,基類只是用於繼承,僅作為乙個介面,具體功能在派生類中實現!)
例子:class shape
;class ******** : public shape
;class rect : public shape
;void main()
宣告了純虛函式的類,稱為抽象類。
注意:抽象類不能宣告物件,只能用來派生。
抽象類中可以有多個純虛函式
抽象類中也可以定義其他非純虛函式
友元函式:
用friend 字首宣告的函式(在類的定義中宣告(在private或public中宣告沒有區別)),該函式就可以訪問,類的私有成員了! 這個函式不是類的成員函式!
友元類:
friend class b
在乙個a類中,把另乙個b類定義為友元類,則b類就可以訪問a類中的私有元素了!
類模組:
基本語法:template 《型別形式參數列》 class 類模組名
例:#include
//定義類模組abc
template class abc
private :
t arrat[i];
public:
void main()
abcabc2;//由模板abc生成物件abc2!這樣即生成了int 型別的大小為100的乙個陣列!!!就有這樣的方便
函式模組:
和上面相似:
template t min(t x,t y)
return x呼叫時:
a=min(20,10);
b=min('a','a');
就是取消了型別的限制。 還可以帶來許多的方便,自己慢慢想想(ˇˍˇ) 想~
運算子的過載:(即把已有的運算子在指定的類中,定義為其他的功能!)
語法格式如下:
type x::operator @(形參表)
//函式體 重新定義運算子@在指定類x中的功能!
type:返回值型別
x:是需要過載該運算子的類名!
@:是需要被過載的運算子
c 學習 第一天
折騰了一天,終於知道了我對linux一竅不通,連個軟體都不會裝,誰會相信我四個月後會是怎樣。知道了兩個命令 sudo apt get install vim 安裝vim編輯器 sudo apt get install build essential 安裝gcc和gdb 儲存為hello.cpp,在g...
c 學習第一天
c 是乙個物件導向的語言。本人使用時使用的是centos7系統 首先centos7中自帶有c 的庫以及編譯器 標頭檔案所在目錄 ust include c 版本號 首先第乙個坑 輸出 c中stdin.h中有printf函式 c 中需要用到cout函式語法如下 std cout 變數或字串 std e...
學習第一天
知識是學會的,不是教會的 程式設計 驗證性或體驗性 創造性 學程式設計的4個階段 1.能看懂別人的 除錯別人的 2.能修改別人的 3.能拷貝別人的 做自己的事 4.能自己設計編寫 方法 多讀 做記錄 執行 修改 執行 練習,光說不練假把式 刷oj總結 寫部落格或許是個不錯的選擇 學生和已經工作的程式...