C++总结篇(2)类和对象
1、類
1.1類的定義:
C++是一門面向?qū)ο蟮恼Z言,便就引入了類的概念,類在一定程度上與C語言中的結(jié)構(gòu)體很相似。Class為定義類的關(guān)鍵字,如下示例:
類不僅可以用class來定義,還可以用struct定義,因?yàn)镃++完全包含C語言,二者不同的是,再類中沒有訪問限定時(shí),class默認(rèn)private訪問方式,struct默認(rèn)public訪問方式。
1.2類的使用:
類的成員都在類的作用域中,在外部無法直接調(diào)用,需要使用作用域解析符,示例如下:
1.3類的大小:
類與結(jié)構(gòu)體一樣,都有大小,即所有成員大小之和,但仍遵守內(nèi)存對齊原則,空類的大小為1個(gè)字節(jié)。內(nèi)存對齊規(guī)則如下:
1.4類的訪問方式:
private(私有):在類外不能調(diào)用
public(公有:可在類外調(diào)用
proteted(保護(hù)):在類外不能調(diào)用
訪問權(quán)限作用域從該訪問限定符出現(xiàn)的位置開始直到下一個(gè)訪問限定符出現(xiàn)時(shí)為止
2、this指針
2.1作用:
如果一個(gè)類定義了很多個(gè)對象,在調(diào)用某個(gè)對象中的成員函數(shù)來訪問某一變量時(shí),都是通過指針來訪問的,編譯器自動(dòng)給成員函數(shù)添加了一個(gè)指針參數(shù),這個(gè)指針便是this指針,其指向需要訪問的變量。
2.2this指針特性:
3、構(gòu)造函數(shù)
3.1概念
構(gòu)造函數(shù)是一個(gè)特殊的成員函數(shù),名字與類名相同,創(chuàng)建類類型對象時(shí)由編譯器自動(dòng)調(diào)用,保證每個(gè)數(shù)據(jù)成員 都有 一個(gè)合適的初始值,并且在對象的生命周期內(nèi)只調(diào)用一次。
3.2 特性:
3.3 示例:
class A { public:A(int x, int y){a = x;b = y;}void print(){cout << a << " " << " " << b << endl;} private:int a;int b; }; int main() {A a(1,2);a.print();system("pause");return 0; }4、析構(gòu)函數(shù)
4.1 概念:
與構(gòu)造函數(shù)功能相反,析構(gòu)函數(shù)不是完成對象的銷毀,局部對象銷毀工作是由編譯器完成的。而 對象在銷毀時(shí)會(huì)自動(dòng)調(diào)用析構(gòu)函數(shù),完成類的一些資源清理工作。析構(gòu)函數(shù)也是特殊的成員函數(shù)。
4.2 特性:
4.3 示例:
class A { public:A(int x, int y){a = x;b = y;ptr = (int *)malloc(sizeof(int));}~A(){if (ptr){free(ptr);ptr = nullptr;}a = 0;b = 0;} private:int a;int b;int *ptr; };5、拷貝構(gòu)造函數(shù)
5.1概念:
只有單個(gè)形參,該形參是對本類類型對象的引用(一般常用const修飾),在用已存在的類類型對象 創(chuàng)建新對象時(shí)由編譯器自動(dòng)調(diào)用。
5.2 特性:
拷貝構(gòu)造函數(shù)是構(gòu)造函數(shù)的一個(gè)重載形式。拷貝構(gòu)造函數(shù)的參數(shù)
只有一個(gè)且必須使用引用傳參,使用傳值方式會(huì)引發(fā)無窮遞歸調(diào)用。
5.3 示例:
6、賦值運(yùn)算符重載
6.1 概念:
C++為了增強(qiáng)代碼的可讀性引入了運(yùn)算符重載,運(yùn)算符重載是具有特殊函數(shù)名的函數(shù),也具有其返回值類 型,函數(shù)名字以及參數(shù)列表,其返回值類型與參數(shù)列表與普通的函數(shù)類似。函數(shù)名字為:關(guān)鍵字operator后面接需要重載的運(yùn)算符符號。
6.2規(guī)則:
6.3 示例:
class A { public:A(int x, int y){a = x;b = y;ptr = (int *)malloc(sizeof(int));}bool operator==(const A &d1){return (d1.a == a&&d1.b == b);} private:int a;int b;int *ptr; };7、友元函數(shù)
7.1 概念:
友元函數(shù)可以直接訪問類的私有成員,它是定義在類外部的普通函數(shù),不屬于任何類,但需要在類的內(nèi)部聲 明,聲明時(shí)需要加friend關(guān)鍵字。
7.2 特性:
友元函數(shù)可訪問類的私有成員,但不是類的成員函數(shù)
友元函數(shù)不能用const修飾
友元函數(shù)可以在類定義的任何地方聲明,不受類訪問限定符限制
一個(gè)函數(shù)可以是多個(gè)類的友元函數(shù)
友元函數(shù)的調(diào)用與普通函數(shù)的調(diào)用和原理相同
7.3 示例:
8、友元類
8.1 概念:
友元類的所有成員函數(shù)都可以是另一個(gè)類的友元函數(shù),都可以訪問另一個(gè)類中的非公有成員。
8.2 特性:
總結(jié)
以上是生活随笔為你收集整理的C++总结篇(2)类和对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [PyQt5]点击主窗口弹出另一个窗口
- 下一篇: s3c2440移植MQTT