1、類的空間大小
using
namespace std;
class
data
intgetnum
(void)}
;void
test01()
2、成員函式,在類內宣告,類外定義
#include
using
namespace std;
class
data
;//data類的成員函式
void data::
setnum
(int data)
int data::
getnum()
void
test01()
intmain
(int argc,
char
*ar**)
3、建構函式和析構函式的概述
建構函式和析構函式,這兩個函式將會被編譯器自動呼叫,建構函式完成物件的初始化動作,析構函式在物件結束的時候完成清理工作。
注意:物件的初始化和清理工作是編譯器強制我們要做的事情,即使你不提供初始化操作和清理操作,編譯器也會給你增加預設的操作,只是這個預設初始化操作不會做任何事。
建構函式:例項化物件的時候系統自動呼叫
析構函式:物件釋放的時候系統自動呼叫
3.1、建構函式和析構函式的定義
建構函式語法:
建構函式函式名和類名相同,沒有返回型別,連void都不可以,但可以有引數,可以過載
析構函式語法:
析構函式函式名是在類名前面加」~」組成,沒有返回型別,連void都不可以,不能有引數,不能過載
class
data
//建構函式(有參的構造)
data
(int n)
//析構函式
~data()
};void
test01()
intmain
(int argc,
char
*ar**)
4、建構函式的分類以及呼叫
4.1、建構函式分類:
按引數型別:分為無參建構函式和有參建構函式
按型別分類:普通建構函式和拷貝建構函式(複製建構函式)
4.2、建構函式的呼叫
class
data
//建構函式(有參的構造)
data
(int n)
//析構函式(沒有返回值型別 沒有引數 不能過載)
~data()
};void
test02()
4.3、拷貝建構函式
data
(const data &ob)
//const data &ob = ob1
void
test03()
5、建構函式的呼叫規則
系統會對任何乙個類提供3個函式成員函式:
預設建構函式(空) 預設析構函式(空) 預設拷貝建構函式(淺拷貝)
5.1、如果使用者提供了有參構造 將遮蔽 系統的預設建構函式.
data ob1;
//err
5.2、如果使用者提供了有參構造 不會遮蔽 系統的預設拷貝建構函式。
data ob1(10
);data ob2 = ob1;
ob2.num ==
10
5.3、如果使用者提供了拷貝建構函式 將遮蔽 系統的預設建構函式、預設拷貝建構函式
data ob1;
//err
6、深拷貝和淺拷貝
淺拷貝
class
person
person
(char
*name,
int num)
cout<<
" 已經申請好空間"
(m_name,name)
; m_num = num;
cout<<
"有參構造"
<}person
(const person &ob)
//ob==>lucy
~person()
cout<<
"析構函式"
<}void
showperson
(void)}
;void
test01()
如果類中的成員 指向了堆區空間 一定要記得在析構函式中 釋放該空間
如果使用者 不實現 拷貝構造 系統就會提供預設拷貝構造
而預設拷貝構造 只是單純的賦值 容易造成淺拷貝問題
使用者記得 要實現:無參構造(初始化資料)、有參構造(賦引數)、拷貝構造(深拷貝) 、析構函式(釋放空間)
7、初始化列表
注意:初始化成員列表(引數列表)只能在建構函式使用
class
data
~data()
void
showdata
(void)}
;void
test01()
小白學習,c 基礎(四)
巨集函式 帶引數 的缺點 第乙個在c中也會出現,巨集看起來像乙個函式呼叫,但是會有隱藏一些難以發現的錯誤。第二個問題是c 特有的,預處理器不允許訪問類的成員,也就是說預處理器巨集不能用作類的成員函式 內聯函式 內聯函式為了繼承巨集函式的效率,沒有函式呼叫時開銷,然後又可以像普通函式那樣,可以進行引數...
小白學習,c 基礎(七)
1.1修飾成員函式 用const修飾的成員函式時,const修飾this指標指向的記憶體區域,成員函式體內不可以修改本類中的任何普通成員變數,當成員變數型別符前用mutable修飾時例外。int myfun void const const修飾的是成員函式 函式內部不能修改普通成員變數 mutabl...
C語言基礎學習(五)
注 關於陣列名的乙個通常兩個例外 char arr 10 1 arr 通常情況表示首元素的位址 2 arr 表示整個陣列的位址 sizeof arr 整個陣列占用記憶體空間大小 基位址 變數的位址值 位址包括兩個方面的內容 乙個叫物件大小 乙個是基位址 32位或者64位 指標 用來儲存位址的變數 指...