明天期末考試,稍微複習(預習)一下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...