前言:C++初階系列,每一期博主都會使用簡單樸素的語言將對應的知識分享給大家,爭取讓所有人都可以聽懂,C++初階系列會持續(xù)更新,上學期間將不定時更新,但總會更的
目錄
一、什么是面向對象編程
二、什么是類和如何定義類
1.類的概念
2.類的特點
3.訪問限定符
4.如何定義類
5.類定義的小細節(jié)
6.類的大小如何計算?
7.this指針
三、下期預告
一、什么是面向對象編程
在C語言中,我們編寫代碼更多地是面向過程進行編寫的,通過分析出求解問題的步驟,然后函數(shù)調用逐步解決問題。比方說洗衣服,在C語言的實現(xiàn)就是打開洗衣機->放衣服進去->倒入洗衣液->關上洗衣機->啟動洗衣機->洗衣機翻滾->洗衣機甩干......如此一步一步地實現(xiàn)。
而在C++中更多的是面向對向對象進行編寫的。洗衣服這個操作,操作的對象便有4個,洗衣機,洗衣液,衣服和人,洗衣服在C++的實現(xiàn)則是使用這4個對象互相交互實現(xiàn)的,而人是不需要去關注洗衣機是如何去洗衣服的,只需要把事情交給洗衣機干就行了。這便是面向過程編程和面向對象編程的區(qū)別。
二、什么是類和如何定義類
1.類的概念
其實在C語言的學習中,我們已經接觸到了類這一內容,那便是我們的結構體, 而在C++中更喜歡將結構體稱作類。在C語言中我們使用struct定義結構體,在C++中我們不僅可以通過struct定義類,也可以通過class定義類。兩種方式幾乎一樣,只有一點是不太一樣的,后面在訪問限定符中我們會講到。
2.類的特點
相比于C語言中結構體的使用,類的使用更顯特別,類的里面不止可以定義成員,還可以定義成員函數(shù),更有趣的是它可以令部分內容為私有,令部分內容為公有。什么是公有呢,在類外面也可以訪問,而私有則相反,只能在類中使用,聽上去是不是有點抽象,沒關系,我們在之后的內容會有詳細的講解。
3.訪問限定符
在講解如何定義類之前我們還要再補充一點,那便是訪問限定符。類的訪問限定符分為三種:public(公有的),protected(被保護的),private(私有的),private和protected在目前的學習中是可看作一樣的,之后需要使用到它們之間的特性時會特別強調,當然這還要很久。回到之前的問題,struct和class有什么區(qū)別?
區(qū)別就在于struct定義的類默認是公有的,class定義的類默認是私有的。
1. public修飾的成員在類外可以直接被訪問
2. protected和private修飾的成員在類外不能直接被訪問
3. 訪問權限作用域從該訪問限定符出現(xiàn)的位置開始直到下一個訪問限定符出現(xiàn)時為止
4. 如果后面沒有訪問限定符,作用域就到 } 即類結束。
4.如何定義類
方法1:聲明和定義全部放在類中
#include<iostream>
using namespace std;
class abc
{
public:
//公有的,意味著可以被外界訪問
void init()
//初始化函數(shù)
{
_a = 520;
_b = nullptr;
_c = 13.14;
}
void print()
//打印函數(shù)
{
cout << _a << endl;
cout << _b << endl;
cout << _c << endl;
}
private:
//私有的,不能被外界訪問
int _a;
int* _b;
double _c;
};
int main()
{
abc a1;
//創(chuàng)建一個類型為abc的變量a1;
a1.init();
//初始化
a1.print();
//打印
}
簡單運行下
?試著訪問下私有,報錯
方法2:聲明和定義分離:
在寫類的成員函數(shù)時肯定會有同學想像之前一樣,將多個函數(shù)的定義寫在同一個文件中。這是可以實現(xiàn)的
聲明寫在頭文件中
定義寫在對應文件中
一樣可以運行出正確結果?
5.類定義的小細節(jié)
不知道你們有沒有發(fā)現(xiàn),博主在定義類的成員變量的時候在變量之前加了_定義了_a,_b,_c這樣的變量,為什么博主不直接定義a,b,c呢?當我們在進行賦值操作的時候,令成員變量變?yōu)榱硪粋€參數(shù)時,我們書寫的代碼很可能是這樣的,a對應a,b對應b,c對應c。
當有同名變量出現(xiàn)的時候,編譯器會根據(jù)就近原則進行運行,也就是令100=100,200=200,300=300并不會真正影響到我們創(chuàng)建的abc中的成員變量,為了方便區(qū)分,我們在創(chuàng)建類的時候,通常會在成員變量前加_或者是后加_,如此便可以很快速的識別出變量的用途,對變量進行對應的賦值。?
6.類的大小如何計算?
先說一個結論:類的計算是不包括this指針和成員函數(shù)的,this指針等下會講到。如何計算類的大小,有如下規(guī)則(把結構體換成類即可)
(1) 第一個成員在與結構體變量偏移量為0的地址處。
(2) 其他成員變量要對齊到某個對齊數(shù)的整數(shù)倍的地址處。
對齊數(shù) = 編譯器默認的一個對齊數(shù)與該成員大小的較小值。
VS中默認的值為8
(3) 結構體總大小為最大對齊數(shù)(每個成員變量都有一個對齊數(shù))的整數(shù)倍。
(4) 如果嵌套了結構體的情況,嵌套的結構體對齊到自己的最大對齊數(shù)的整數(shù)倍處,結構體的整
體大小就是所有最大對齊數(shù)(含嵌套結構體的對齊數(shù))的整數(shù)倍。
自定義類型詳解_大海里的番茄的博客-CSDN博客
博主寫的這篇文章有更詳細的解答,感興趣的同學可以去看一下。
7.this指針
學過C語言的同學看這個傳遞變量的過程一定會覺得怪怪的:為什么不用.或者->就能夠修改結構體的成員變量呢(類),那是因為我們C++有一個隱藏的變量被傳遞過去了,那便是this指針,this指針存放了你所傳遞變量的地址? ?且在中所有“成員變量”的操作,都是通過該指針去訪問。只不過所有的操作對用戶是透明的,即用戶不需要來傳遞,編譯器自動完成。
當然你想要顯示的實現(xiàn)變量的訪問過程也是可以的,兩者沒有區(qū)別。如果你之前寫的是C語言,現(xiàn)在一定會很爽QAQ。
最后需要提醒的一點細節(jié)便是this指針為了方便調用一般存儲在寄存器上。
三、下期預告
下一回我們來聊下構造函數(shù)和析構函數(shù),這周必出餐QAQ文章來源:http://www.zghlxwxcb.cn/news/detail-742626.html
好了,今天的分享到這里就結束了,感謝各位友友的來訪和閱讀,祝各位友友們前程似錦O(∩_∩)O?文章來源地址http://www.zghlxwxcb.cn/news/detail-742626.html
到了這里,關于C++初階 類和對象(上)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!