努力學習c 的一天(十)

2021-10-14 07:52:17 字數 1687 閱讀 1647

1. string類

使用 string 類需要包含標頭檔案

參考:

2. c++引用

引用的定義方式類似於指標,只是用&取代了*,語法格式為:

type &name = data;

引用必須在定義的同時初始化,並且以後也要從一而終,不能再引用其它資料,這有點類似於常量(const 變數)。

注意,引用在定義時需要新增&,在使用時不能新增&,使用時新增&表示取位址。

如果不希望通過引用來修改原始的資料,那麼可以在定義時新增 const 限制,形式為:

const type &name = value;

3. c++繼承與派生

繼承:class 派生類名:訪問許可權  基類名{}

如果派生類中的成員(包括成員變數和成員函式)和基類中的成員重名,那麼就會遮蔽從基類繼承過來的成員,不會構成過載。  

但是,基類中的成員函式仍然可以訪問,不過要加上類名和域解析符

關於派生類的建構函式:

在設計派生類時,對繼承過來的成員變數的初始化工作也要由派生類的建構函式完成,但是大部分基類都有 private 屬性的成員變數,它們在派生類中無法訪問,更不能使用派生類的建構函式來初始化。

解決這個問題的思路是:在派生類的建構函式中呼叫基類的建構函式。

//people(name, age)就是呼叫基類的建構函式

student::student(char *name, int age, float score): people(name, age), m_score(score)

定義派生類建構函式時最好指明基類建構函式;如果不指明,就呼叫基類的預設建構函式(不帶引數的建構函式)

關於派生類的析構函式:

為了解決多繼承時的命名衝突和冗餘資料問題,c++ 提出了虛繼承virtual,使得在派生類中只保留乙份間接基類的成員。

4. 賦值

這種轉換關係是不可逆的,只能用派生類物件給基類物件賦值,而不能用基類物件給派生類物件賦值。

通過基類指標只能訪問派生類的成員變數,但是不能訪問派生類的成員函式。為了消除這種尷尬,讓基類指標能夠訪問派生類的成員函式,c++ 增加了虛函式(virtual function)

5. 多型

c++中虛函式的唯一用處就是構成多型,基類指標可以按照基類的方式來做事,也可以按照派生類的方式來做事,它有多種形態,或者說有多種表現方式,我們將這種現象稱為多型

c++提供多型的目的是:可以通過基類指針對所有派生類(包括直接派生和間接派生)的成員變數和成員函式進行「全方位」的訪問,尤其是成員函式。如果沒有多型,我們只能訪問成員變數。

有虛函式才能構成多型,這節我們來重點說一下虛函式的注意事項:

1) 只需要在虛函式的宣告處加上 virtual 關鍵字,函式定義處可以加也可以不加。

2) 為了方便,你可以只將基類中的函式宣告為虛函式,這樣所有派生類中具有遮蔽(覆蓋)關係的同名函式都將自動成為虛函式

努力學習c 的一天(三)

盡力尊重原創 1.封裝成dll和lib的區別是什麼?首先,dll和lib都是鏈結庫,dll是動態鏈結庫,lib是靜態鏈結庫。靜態庫是指在鏈結的過程中,將該庫中的 完全複製到可執行檔案中 動態庫是指可以被不同程序呼叫但不屬於可執行檔案的函式,可由多個程式同時使用。總之,lib是編譯時用到的,dll是執...

努力學習C 的一天(五)

1.stdafx.h和stdafx.cpp是用來幹嘛的?stdafx.h,stdafx.cpp這些檔案用於生成名為.pch 的預編譯頭 pch 檔案和名為 stdafx.obj 的預編譯型別檔案。結構體定義 struct calib para 函式宣告 float compute angle cal...

努力學習c 的一天(九)

參考 參考 1.建構函式怎麼寫 首先,當類被例項化後,會自動呼叫建構函式,由建構函式完成物件的初始化工作,建構函式的作用 初始化物件的資料成員 因此,建構函式中的內容 初始化物件成員 包括public private class student 使用變數 函式時要指明它們所在的命名空間。li fp ...