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