1.類中的變量叫成員變量,數據成員。類中的函數,叫成員函數,方法
2.類的聲明方法
class cat
{
int a;
int b;
void c()
};
記住最後要有個分號,況且這個聲明並不會分配內存,只是告訴編譯器cat是什麼,用它定義變量時要如何分配內存,就和int一樣
4.類定義對象,比如你想用到cat這個類型的變量,那麼就可以
cat simple;
這樣來定義一個,訪問其內部的成員
simple.a=2;
記住不要直接用cat,併爲其賦值,就像不能直接用int併爲其賦值一樣
5.公有,私有,保護。在類中的成員有3中性質,公有就是表示我們可以在任意情況下訪問,私有表示只能自己訪問,保護表示類的派生類可以訪問。其關鍵字分別人,public,private,protected。比如2中我們沒有關鍵字,則默認爲私有,也就是4中那種訪問方式其實是錯誤的。我們來通過一個例子來具體說明以下公有和私有,至於保護要等到繼承的時候再說:
class cat
{
public:
int getage();
void setage(int mage);
private:
int age;
};//聲明class
int cat::getage()
{
return age;
}//定義class中的getage函數
void cat:setage(int mage)
{
age=mage;
}//定義setage函數
cat simple;
simple.setage(3);
int a=simple.getage()
這裏我們定義了一個cat的對象simple,並調用了simple的公有函數getage和setage。通過類自己的函數來調用它的私有成員,不可以直接調用
simple.age=4;//這是錯誤的,因爲age是私有的。
6.構造函數和析構函數。構造函數就是在實例化一個類的時候,也就是用類去定義一個變量時,程序就會自動調用構造函數去對對象裏面的成員變量進行初始化。析構函數就是在對象無效或是銷燬時,自動調用,對聲明的內存或變量進行釋放。
7.重新定義以下cat類:
class cat
{
public:
cat(int ini);//這是構造函數,和類同名,可以加參數,也可以不加,但是不能有返回值
~cat();//這是析構函數,開頭是個~符號,並且與類同名,不能有參數和返回值
int getage();
void setage(int age);
private:
int itsage;
};
cat::cat(int ini)//對構造函數定義
{
intsage=ini;
}
cat::~cat()
{
}
如果你再用cat去實例化一個對象時,
cat mycat(5);
這時就會調用構造函數,如果程序結束,對象消除,就會自動調用析構函數
8.按照標準來說,沒一個class,最好是有一個構造函數,並且有了構造函數就必須有析構函數。
9.使用const。我們對於一些類的成員函數,可以使用const來減少錯誤。比如一些讀取變量的函數等一些不需要對類的成員進行改變的方法,最好都用const,來防止誤操作對成員進行改變
10.我們一般把定義放在.h文件中,成爲頭文件,把實現放在.c或.cpp中。
11.內聯。在一個函數定義的前面加上inline,這個函數就是內聯的了。也就是如果你再調用這個函數就不是動態的調用了,相當於你把這個函數直接寫道了調用的地方。比如
class cat
{
public:
int getweight();
private:
int weight;
};
inline int cat:getweight()
{
return itsweight;
}
這樣寫相當於下面
class cat
{
public:
int getweight()
{
return weight;
}
private:
int weight;
};
12.在計算機裏,喜歡把複雜的事物簡單化,也就是分塊。所以爲了聲明覆雜的類,可以先聲明一些簡單的類,然後在類中用其他的類定義成員
13.聲明只是引入一個名,定義才爲其分配內存。而類和全局變量的聲明,也是定義
14.struct和class相似,只不過struct的成員默認是公有的,默認採用公有繼承。如果顯式聲明類的公有和是由部分,類和結構體沒有不同
下章見(以上全是個人觀點,如有不當,敬請提出)