前面講的面向過程和面向?qū)ο?,大家都有了基本的了解,也用struct定義了類,那么接下來咱們就用C++提供的另一個(gè)關(guān)鍵字class來定義類,同樣的我們還是使用前面的學(xué)生結(jié)構(gòu),首先直接把struct改成class看有沒有什么問題。
class Stu //定義學(xué)生結(jié)構(gòu)
{
int id;
int age;
char name[10];
void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
id = sid;
age = sage;
strcpy(name, sname);
}
void showStuInfo()
{
cout << id << " " << age << " " << name << endl;
}
};
int main()
{
Stu cPlus;//前面講過在C++中可以省略,struct關(guān)鍵字
cPlus.init();// error “Stu::init”: 無法訪問 private 成員
cPlus.showStuInfo();//error “Stu::showStuInfo”: 無法訪問 private 成員
return 0;
}
編譯代碼會(huì)發(fā)現(xiàn),有兩處錯(cuò)誤,大概的意思都是說無法訪問private成員,那么什么意思呢?這就是struct和class的不同之處了:
- struct 默認(rèn)是公有(public)的:即在類的外面可以訪問類里面的成員(如果沒有指定權(quán)限訪問限定符)
- class 默認(rèn)是私有(private)的:即在類的外面不可以訪問類的成員(如果沒有指定權(quán)限訪問限定符)
相同點(diǎn):
- 都可以使用權(quán)限訪問限定符來修改類成員,在外部的訪問權(quán)限(除此之外struct和class沒有任何區(qū)別)
對(duì)于上面的代碼,我們可以這樣修改一下在類中的最上面加上public,這樣就可以在外面隨意訪問成員啦

如果說只想讓外部能夠訪問成員函數(shù),而不想讓外部訪問到成員變量,那么可以這樣

至于protected訪問限定符,是作用與派生類中的,這個(gè)后面會(huì)講到(對(duì)于類的外部來說,和private一樣)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
C++
+關(guān)注
關(guān)注
22文章
2131瀏覽量
77416 -
Class
+關(guān)注
關(guān)注
0文章
54瀏覽量
20530 -
Struct
+關(guān)注
關(guān)注
0文章
31瀏覽量
11298
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
關(guān)于LabVIEW 類及其對(duì)象使用的疑問
各位大神,我一直有個(gè)關(guān)于LabVIEW中使用類的問題。。。。當(dāng)我建好一個(gè)類之后,直接將其拖到一個(gè)VI的程序框圖中,相當(dāng)于一個(gè)類的對(duì)象,在這個(gè)VI中我可以隨便操作這個(gè)
發(fā)表于 11-23 22:20
JAVA和C++區(qū)別
。 8 字符串 c和c十十不支持字符串變量,在c和c十十程序中使用Null終止符代表字符串的結(jié)束,在Java中字符串是用類對(duì)象(strinR和stringBuffer)來實(shí)現(xiàn)的,這些類對(duì)象是
發(fā)表于 10-10 14:50
3分鐘看懂Python面向對(duì)象
Python雖然是解釋型語(yǔ)言,但從設(shè)計(jì)之初就已經(jīng)是一門面向對(duì)象的語(yǔ)言,對(duì)于Python來說一切皆為對(duì)象。正因?yàn)槿绱?,在Python中創(chuàng)建一個(gè)類和對(duì)象是很容易的,當(dāng)然如果習(xí)慣面向過程或者
發(fā)表于 06-08 14:20
VEE對(duì)象是否支持阿拉伯字符?
大家好,有人知道VEE對(duì)象是否支持阿拉伯字符?我假設(shè)他們是Microsoft Windows應(yīng)用程序的一部分,但如果有人有阿拉伯語(yǔ)運(yùn)行的VEE應(yīng)用程序的屏幕截圖,我真的很感激!有人設(shè)法讓VEE對(duì)象
發(fā)表于 04-02 06:17
LabVIEW面向對(duì)象的ActorFramework(1)
領(lǐng)域。面向對(duì)象是一種對(duì)現(xiàn)實(shí)世界理解和抽象的方法,是計(jì)算機(jī)編程技術(shù)發(fā)展到一定階段后的產(chǎn)物。 面向對(duì)象是相對(duì)于面向過程來講的,面向對(duì)象方法,把相關(guān)的數(shù)據(jù)和方法組織為一個(gè)整體來看待,從更高的層次來進(jìn)行系統(tǒng)
發(fā)表于 02-10 14:09
類對(duì)象分配內(nèi)存錯(cuò)誤怎么辦
請(qǐng)大神幫忙,萬(wàn)分感謝!??!操作系統(tǒng):ucosIII 芯片:STM32F103我的類建立比較多。類對(duì)象是指針CCarriage*gCar;分配內(nèi)存語(yǔ)句:gCar = new CCarriage
發(fā)表于 05-25 09:51
Java教程之零點(diǎn)起飛學(xué)Java的類與對(duì)象資料說明
類與對(duì)象是進(jìn)行面向對(duì)象編程的基礎(chǔ)。類是具有相同屬性特征和行為規(guī)則的多個(gè)對(duì)象的一種統(tǒng)一描述,對(duì)象是
發(fā)表于 02-20 10:41
?14次下載
Labview面向對(duì)象編程快速入門教程
在面向對(duì)象編程中, 類用來表示通用特性。 例如,假設(shè)有一個(gè)描述汽車的類。 類中定義了各種汽車的通用特性。對(duì)象是
發(fā)表于 07-31 08:00
?88次下載
什么是不可變對(duì)象 不可變對(duì)象存儲(chǔ)可以抵御哪些威脅
新建的對(duì)象。 基本數(shù)據(jù)類型的包裝類以及String類的對(duì)象都是不可變對(duì)象。 不可變對(duì)象和可變
Python中的類和對(duì)象詳解
Python 是一種面向對(duì)象的編程語(yǔ)言,它支持類和對(duì)象。類是一種用戶自定義的數(shù)據(jù)類型,用于定義對(duì)象的屬性和方法。
Objects:為對(duì)象類提供對(duì)象技術(shù)
Objects 對(duì)象類簡(jiǎn)介 IRIS 通過以下對(duì)象類提供對(duì)象技術(shù): %Library.RegisteredObject 、 %Library
類和對(duì)象是什么?
評(píng)論