只做日本的網(wǎng)站網(wǎng)站域名購買
🎁個(gè)人主頁:我們的五年
🔍系列專欄:C++課程學(xué)習(xí)
🎉歡迎大家點(diǎn)贊👍評論📝收藏?文章
?
?
目錄
🍟1.1類的引出:
🍟1.2類的結(jié)構(gòu):
🍟1.3類的兩種定義方法:
🍟1.4成員變量命名的建議:
?前言:
C語言是一門面向過程的語言,而C++是一門面向?qū)ο蟮恼Z言。
1.C語言:
關(guān)注的是過程,解決提出的問題要逐步調(diào)用函數(shù)來解決。
2.C++:
C++是面向?qū)ο?#xff0c;關(guān)注的是對象,其他的有相應(yīng)的方法。
🍟1.1類的引出:
類是在結(jié)構(gòu)體上引出來的,在C語言中,結(jié)果體只可以里面只能有數(shù)據(jù)。而在C++中,結(jié)構(gòu)體中可
以定義函數(shù)。而C++中就這把這變成的類(class),但是與結(jié)構(gòu)體還是有區(qū)別的,比如:
1.結(jié)構(gòu)體里面的數(shù)據(jù)全部是公開(public)的,因?yàn)镃++要兼容C語言。定義了一個(gè)結(jié)構(gòu)體,我們可以直接在main函數(shù)訪問結(jié)構(gòu)體里面的數(shù)據(jù)。
2.類如果什么都不寫的情況下,數(shù)據(jù)都是私有的(private)。
3.C++中的結(jié)構(gòu)體也不需要加struct。
#include<iostream>
using namespace std;
//結(jié)構(gòu)體
struct Data1{int _year;int _month;int _day;
};
//類
class Data2{
public:int _year;int _month;int _day;
};int main()
{Data2 a;a._year = a._month = a._day = 1;//Data1 a;//a._year = a._month = a._day = 1;cout << a._year<<endl;
}
🍟1.2類的結(jié)構(gòu):
class classname{
? ? ? ? //類體:
? ? ? ? //1.成員函數(shù)
? ? ? ? //2.成員變量
};? ? ? ? //和結(jié)構(gòu)體一樣,后面有;
class classname{//類體://1.成員函數(shù)//2.成員變量};? ? ? ? //和結(jié)構(gòu)體一樣,后面有;
這些東西大家看看就行:class類的關(guān)鍵字,classname類的名稱,{}類的主體,還有后面的封號(hào);;
大家需要看的就是:
類里面的內(nèi)容分為兩種:
1.類里面的數(shù)據(jù)叫成員變量,或者類的屬性,但是我覺得,把它看成類的屬性更能突出面向?qū)ο?#xff0c;
關(guān)注的對象。
2.類里面的函數(shù)叫成員函數(shù),或者類的方法。還是一樣的,我覺得,類的方法更能突出其面向?qū)ο蟮奶攸c(diǎn)。
🍟1.3類的兩種定義方法:
兩種方法的主要區(qū)別也就是,是否類的方法都在類里面進(jìn)行聲明和定義。
1.類的方法都在類里面聲明和定義:
這種情況下,編譯器會(huì)把函數(shù)當(dāng)成內(nèi)聯(lián)函數(shù)進(jìn)行處理。
#include<iostream>
using namespace std;class Data {
public://聲明和定義都在類里面void print() {cout << "print()" << endl;}
private:int _data;
};int main()
{Data a;a.print();
}
2.類的方法的聲明和定義分開,聲明在類里面,定義不在類里面:
聲明放在.h文件種,定義在.cpp文件中。
#include<iostream>
using namespace std;class Data {
public://聲明void print();
private:int _data;
};//定義:
void Data::print() {cout << "聲明和定義分離" << endl;
}int main()
{Data a;a.print();
}
🍟1.4成員變量命名的建議:
一般我們介意在類的變量名稱中加入一些符號(hào)以區(qū)分。
一般的就是在名字前面加_,或者在名字后面加_。不同的公司有不同的命名方式。
比如:
#include<iostream>
using namespace std;class Data {
public://聲明void print();
private://在data前面加上_int _data;
};//定義:
void Data::print() {cout << "聲明和定義分離" << endl;
}int main()
{Data a;a.print();
}