-
空指標和野指標
int *p = NULL; //空指標,即地址為0的指標
int *q = (int)0x1234; //野指標
空指標和野指標,我們都沒有權限訪問,
-
指標地址大小
指標地址所占記憶體大小跟系統有關,
32位機的指標占4個byte,64位機占8個byte,
-
指標常量和常量指標的宣告
const int * p; //常量指標
int * const p; // 指標常量
-
利用指標訪問陣列
int arr[] = {1,2,3};
int *p = arr; //陣列名為首地址
//利用指標訪問陣列
for(int i=0;i<sizeof(arr)/sizeof(int);i++){
cout << *p << endl;
p++;
}
-
不要回傳區域變數的地址
區域變數存在堆疊區,參考完畢后會被銷毀,所以不要回傳區域變數的地址,
-
指向堆區的指標
int * p = new int(10);
指標在堆疊區,而指標保存的值在堆區
-
釋放陣列
int * arr = new int[10];
delete[] arr; //釋放陣列
-
參考
參考就是變數的別名
int a = 0;
int &b = a; //參考初始化,這是參考必須的步驟,而且b參考a后不能再參考其他變數
至此,&符號有兩個功能:指標取地址、取別名
-
形參修飾實參的方法:地址傳遞,參考傳遞
指標傳遞:int func(int *ptr){}
參考傳遞:int func(int &foo){}
-
參考的本質
int & func() {
//.....
return 1;
}
func() = 1000; // func()是參考的,能被賦值了
參考的本質: 指標常量
-
struct和class的區別
struct和class的區別就在于默認訪問權限不同,
struct: public
class: private
淺拷貝、深拷貝
-
class的嵌套場景下,構造和析構的順序
class A{
B b;
}
class B{
}
A a;
先構造B,再構造A
先析構A,再析構B
-
靜態成員
類和物件都能訪問靜態成員函式
類的靜態成員函式只能訪問靜態成員變數,因為他沒法區分非靜態成員變數是哪個物件的,
空物件的記憶體大小是1byte
this的本質是指標常量
-
友元
友元實作的三種方案:
1.全域函式
2.類
3.類中的成員函式
非靜態成員不會被繼承
子類繼承父類的所有成員變數和函式,編譯器會屏蔽子類對父類的private成員訪問
-
多型
多型有兩類:
靜態多型:多載實作,在編譯階段確定函式地址
動態多型: 派生和虛函式實作,在運行階段確定函式地址
-
虛函式
class A{
public:
virtual int func() = 0; // =0代表純虛函式
}
class B:public A
{
public:
int func(){//....};
}
如果一個類中實作了純虛函式,這個類變成了抽象類,
子類必須重寫抽象類的純虛函式,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/225969.html
標籤:C++
上一篇:通過讀取學生txt,進而實作隨機選人(包含對應人物照片)并用GUI實作
下一篇:MyBatis 面試題
