7 8隨筆(C 複習)

2021-10-07 22:08:03 字數 2625 閱讀 1220

明天期末考試,稍微複習(預習)一下c++課程設計

把引用作為函式返回值:

#include

using

namespace std;

int a[10]

=;int&

change

(int i)

intmain()

/*output:67

345*/

register型別:register修飾符暗示編譯程式相應的變數將將被頻繁使用,如果可能的話,應將其儲存在cpu的暫存器中,以指加快其訪問速度。但是,使用register修飾符有幾點限制:

(1)只有區域性自動變數和形式引數可以作為暫存器變數,其他(如全域性變數)不行。

(2)乙個計算機系統中的暫存器數目是有限的,不能定義任意多個暫存器變數。

(3)區域性靜態變數不能定義為暫存器變數。

其實這個變數已經過時,因為現在的計算機處理速度夠快,所以很少使用.。

c++類中的資料成員不可以直接賦初值,也就是定義的時候不能被初始化,而應該在建構函式中初始化

(雖然c++11可以這麼做)

類a將其它類物件作為成員,則建立a類物件時,成員(其他類)建構函式先執行

派生類不能繼承基類的建構函式、析構函式、拷貝建構函式、拷貝賦值函式(過載運算子)

常成員函式:在普通的成員函式基礎上使用const關鍵字進行修飾,定義與宣告時都需要加

常成員函式無法對成員變數進行修改,但是可以呼叫類中的其他常成員函式

常量物件只能呼叫常成員函式,因為常量物件不能改變成員變數,而常成員函式保證了不對成員變數進行修改

#include

using

namespace std;

classa;

void a::f(

)const

void a::f2(

)const

intmain()

虛繼承與二義性

一般來說,在兩種情況下會出現二義性問題

存在類a,類b,ab類存在同名成員x,ab作為基類繼承得到c類時,c類會繼承兩個同名成員,這種情況可以用::作用域運算子解決

見下面示例。存在類a,類a單繼承得到b1,b2,b1,b2多繼承得到c,c會繼承兩份a的成員。

#include

using

namespace std;

classa;

classb1:

public a

;classb2:

public a

;classc:

public b1,

public b2

;int

main()

這時候仍然可以使用作用域運算子解決,但是作用域運算子要放在b1,b2前面。

#include

using

namespace std;

classa;

classb1:

public a

;classb2:

public a

;classc:

public b1,

public b2

;int

main()

不過顯然,同是a中的成員,多份沒有意義,這時候就用到了虛繼承。

虛繼承,在繼承方式前面加上virtual關鍵字修飾,並且在每乙個繼承分支中都不能省略。

#include

using

namespace std;

classa;

classb1:

virtual

public a //每乙個繼承分支都需要加關鍵字virtua;

;classb2:

virtual

public a //每乙個繼承分支都需要加關鍵字virtua;

;classc:

public b1,

public b2

;int

main()

過載類中的運算子

我們可以用兩種函式過載運算子

類成員函式過載運算子(使用this指標)

非成員函式過載運算子

#include

using

namespace std;

classaa

(string a,

int b)

string name;

int score;

a operator

+(a temp)

//成員函式過載+運算子};

bool

operator

==(a temp1, a temp2)

//非成員函式過載==運算子

intmain()

參考資料

資料儲存型別:auto、static、register、extern

c++類成員和資料成員初始化總結

關於c++ 類中資料成員在定義時初始化問題

c++常物件和常成員函式詳解

c++ 過載運算子和過載函式

C 學習隨筆

過載 通過函式過載實現類的多型特性,其特徵 1 同一作用域內 同一類中 2 相同的函式名。3 引數與返回型別不同 僅返回型別不同,不是過載函式。4 virtual關鍵字不影響。覆蓋 通過函式覆蓋實現類的繼承特性,其特徵 1 不同作用域 非同一類中 2 函式名 引數都相同。3 基類中的函式須有virt...

C 學習隨筆

1.引用必須在宣告時初始化,並且初始化後不能改變其值,類似於是乙個指標常量,而指標可以先宣告再初始化,並且指標指向的值可以隨時改變。2.如果帶引數列表的函式,必須從右向左新增預設值,也就是說如果函式引數列表中某乙個引數設定為預設值,那麼其右的所有引數必須提供預設值 int test int a,in...

C 封裝 隨筆

同檔案類內定義 include include using namespace std 定義類 student 資料成員 m strname 資料成員的封裝函式 setname getname class student 定義資料成員封裝函式getname string getname 定義stud...