C++的class和其他的高級語言如C#/Java有些不一樣。這是C++面向?qū)ο蟮暮诵摹?/p>
創(chuàng)新互聯(lián)建站服務(wù)項目包括嘉蔭網(wǎng)站建設(shè)、嘉蔭網(wǎng)站制作、嘉蔭網(wǎng)頁制作以及嘉蔭網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,嘉蔭網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到嘉蔭省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
一點一點來:
一 , 創(chuàng)建class
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
};
int main()
{
My_First_Class c;
c.a = 2;
cout << c.a << endl;
return 0;
}
重點:
①:創(chuàng)建類 , 需要用關(guān)鍵字class。
②:class也是一種數(shù)據(jù)類型,{}外面需要以;來結(jié)束。
注意點:
①:int a 不能被初始化 , 原因:class沒被初始化之前是沒有空間分配的,當(dāng)然其所有的成員也是沒有空間的。

②:關(guān)于訪問修飾符在C++中有3中 private , protected , public
1, 在class中默認(rèn)為private , 在struct中默認(rèn)為public
2, class中,訪問修飾符可以有多個, 其作用范圍為 : 其位置到下一個訪問修飾符的位置(如果沒有下一個訪問修飾符則是到class結(jié)束位置既是 “}”),如下圖:

③:My_First_Class c; 這種初始化是把My_First_Class類對象c放在了棧區(qū)。其實可以將其放入堆去,其方案是利用指針。代碼如下:
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
private:
int c;
};
int main()
{
//My_First_Class c;
//a = 2;
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
return 0;
}
其結(jié)果如下圖:

到目前我們會發(fā)現(xiàn)一個很基礎(chǔ)的問題 , 成員的初始化(如果等待調(diào)用者自己一個一個用代碼實現(xiàn)初始化的話 ,很有可能會漏掉),當(dāng)然在C#/Java等高級語言中 , 這個就不成問題了。
在C++中,提供了構(gòu)造函數(shù)可以提供初始化的
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
My_First_Class()
{
a = 1;
}
private:
int c;
};
int main()
{
My_First_Class c;
cout << c.a << endl;
/*
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
*/
return 0;
}
注意:
①:構(gòu)造函數(shù)和C#/Java一樣 , name使用class的名稱 , 而且沒有返回值
②:構(gòu)造函數(shù)默認(rèn)應(yīng)該放在public之下,不然會報錯。
③:構(gòu)造函數(shù)必須要在需要初始化成員的后面創(chuàng)建,如要初始化a(int) , 必須在int a;的后面創(chuàng)建。
初始化列表:
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
private:
int c;
public:
My_First_Class():a(1),c(2)
{
}
};
int main()
{
My_First_Class c;
cout << c.a << endl;
/*
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
*/
return 0;
}
注意:
①:My_First_Class():a(1),c(2) 賦值的順序是a , c的聲明的順序:

和在構(gòu)造函數(shù)中:后面寫的順序無關(guān):
如下面的寫法,就不會得到預(yù)期的值:
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
int m;
My_First_Class():m(2),a(m)
{
}
};
int main()
{
My_First_Class c;
cout << c.a << endl;
cout << c.m << endl;
/*
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
*/
return 0;
}
結(jié)果為:

因為賦值的順序是先a后m(a在m前進(jìn)行了聲明)
當(dāng)然 , 構(gòu)造函數(shù)也可以是有參的和C#/Java一樣 , 這里就不講了
二:類內(nèi)聲明 , 類外定義
#include <iostream>
using namespace std;
class My_First_Class
{
public:
int a;
int m;
My_First_Class():m(2),a(1)
{
}
int sum();
};
int My_First_Class::sum()
{
return a + m;
}
int main()
{
My_First_Class c;
int sum = c.sum();
cout << c.a << endl;
cout << sum << endl;
/*
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
*/
return 0;
}
運行結(jié)果 :

當(dāng)然 , 這種只是演示(實際開發(fā)中不這么搞) 。 實際開發(fā)中 , 將聲明寫在都文件中 , 將實現(xiàn)寫在源文件中:
定義一個頭文件:

實現(xiàn):
#include <iostream>
using namespace std;
#include "HeadOne.h"
My_First_Class::My_First_Class()
{
a = 10;
}
int main()
{
My_First_Class c;
cout << c.a << endl;
/*
My_First_Class *c = new My_First_Class;
c->a = 3;
cout << c->a << endl;
delete c;
*/
return 0;
}
結(jié)果:

網(wǎng)頁題目:C++class
URL鏈接:http://www.chinadenli.net/article16/iieidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、商城網(wǎng)站、網(wǎng)站內(nèi)鏈、定制開發(fā)、標(biāo)簽優(yōu)化、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)