1.構造函數: 名字和類名相同,沒有返回值,也不需要顯式調用,在創建對象的時候自動執行。---專門用來初始化對象的;
2.訪問權限:在類的內部,無論public,protect,private,都可以互相訪問;沒有限制;
在類的外部,只能是通過對象訪問public的成員,不能訪問private,protected成員;通過類的內部public的函數訪問private;
3. 封裝: 外部對象不能訪問的設置爲private屬性,外部對象可以訪問的可以設置爲public屬性,這個爲封裝。
4. char name[10];
nanme = "xiaoming"; 這個出錯的;地址常量不能賦值
改正方法1:
char *name;
nanme = "xiaoming";
改正方法2:
char name[10];
strcpy(nanme , "xiaoming");
5.析構函數
創造對象時用構造函數初始化;
退出的時候用析構函數來退出,進行清理工作;釋放分配的內存,關閉打開的文件。----析構函數
Demo()----構造
~Demo()----析構函數 ;
構造函數可以重載;
析構函數只能一個,不能重載,析構沒有參數;
6.
const:
1.c++中和#define的作用差不多
在c中修飾的變量不允許改變,但是可以通過指針修改該單元內容,輸出的時候是修改後的內容;
在c++中,雖然通過指針修改,但是輸出仍然是原來的內容,輸出不到內存取值;
2. c++中const的變量只能在本文件中可用,別的文件報錯
c沒有這種限制;
7.static
C中:
1.修飾局部變量:靜態局部變量,執行完釋放,初始化一次,
2.修飾全局變量:只能在本文件中使用;
3.修飾函數:只能在本文件使用;
8. This指針
指向當前對象,通過它可以訪問當前對象的所有成員。當前對象就是正在使用的對象;
在類的內部使用,可以訪問所有的成員,public,private,protect
this只能在非靜態成員函數內部使用,在其他地方非法;
this 只能在對象創建以後才能使用;否則非法;
9. static成員變量
static變量屬於類,只能在類外部初始化;static變量是幾個對象共享使用,相當於全局變量;
外部初始化的格式:
int Student::m_total = 0;
類型 類名::static變量 = 數值;
static 成員的訪問形式:
1. 類名::static變量
Student::m_total
2.對象.(static 變量)
stu.m_total
3.對象指針->(static成員變量)
pstr->m_total
10.static函數
沒有this指針,只能訪問static成員;聲明加static,定義的時候不加
11.const成員函數
可以使用所有的成員,但是不能改變值;
聲明和定義函數時都要加const;
const對象只能調用類的const成員
12.友員函數friend
在類外定義的,不屬於當前類的函數,可以在當前類中聲明,前面加friend,構成友元函數;
友員函數可以訪問當前類的private成員;
友元函數不能直接訪問類的成員,必須藉助對象。
友員的關係是單向的,不是雙向的;
13.友員類
友元類的聲明:
class Address{
public:
friend class Student;
};
友員關係是單向的;
友員關係不能傳遞:B是A的友員,C是B 友員, C和A之間不是友員關係;
14. string類
a.包含頭文件 <string>
string s1; 定義的時候沒有初始化,默認是空;
string s2 = "c plus"; 定義並初始化 c plus ,沒有\0;
string s3 = s2; 定義s3,並把s2賦值給s3;
string s4 (3, 's'); 初始化爲3個s;
string 輸入時,cin是遇到空格默認結束;
string成員可以用下標訪問;從0開始;
b. string 中字符串可以使用+, +=進行字符串的拼接;
c. string插入操作,insert
原型: string& insert(size_t pos, const string &str)
d.string刪除操作:erase
原型:string& erase(size_t pos = 0, size_t length)
s2.erase(5);把s2第5個元素後面的內容全部刪除;
s3.erase(5, 3);s3中第5個後面3個元素刪除
e .string中substr
string substr (size_t pos = 0, size_t len = npos) const;
pos 爲要提取的子字符串的起始下標,len 爲要提取的子字符串的長度。
s2 = s1.substr(3, 10);從第3個開始提取10給s2;
f。string查找find查找出現的位置:
其中的兩種原型爲:
size_t find (const string& str, size_t pos = 0) const;
size_t find (const char* s, size_t pos = 0) const;
15.1繼承
一個類從另一個類獲取成員變量和成員函數的過程;
被繼承的類稱爲父類或者基類,繼承的類稱爲子類或者派生類;
繼承的語法:
class 派生類的名:[繼承方式] 基類名{
派生類的成員;
};
繼承的方式: public ,private,protect,默認是private;
public成員可以通過對象訪問,private只能通過內部函數訪問;
protected:也不能通過對象訪問;
繼承的時候,protected成員可以在派生類中使用,基類的private不能在派生類中使用;
繼承的方式:
1.public繼承:
基類中public成員在派生類中還是public屬性;
基類中protect成員在派生類中protected屬性;
.....private在派生類中不能使用;
2.protected繼承
基類中public成員在派生類中爲protected屬性;
.....protected.............protected.....;
.....private在派生類中不能使用;
3. private繼承
基類中public成員在派生類中爲private屬性;
.....protected..............private....;
.....private在派生類中不能使用;
在派生類中訪問基類的private成員的唯一方法就是藉助基類的非private成員函數;
如果沒有這樣的成員函數則無法訪問;
4, 改變訪問權限 using
使用using改變基類成員在派生類中的訪問權限;
public改成private, private改成public