c++類關於類靜態成員和方法和類的普通成員和方法的關系以及區別
下面把靜態屬性(方法)稱為類的屬性(方法) ,普通屬性(方法)稱為對象的屬性(方法)
調用類成員和屬性的幾種方法
/* 調用類成員和屬性的幾種方法: 類名::屬性或方法名 對象.屬性或對象名 */
#include<cstdio>
#include<iostream>
using namespace std;
class Cat{
public:
static int tot;
static void Comemet(){
tot=100;
}
static void Print(){
cout<<tot<<endl;
}
};
int Cat::tot=0;
int main()
{
Cat::Comemet();
Cat::Print();
cout<<Cat::tot<<endl;
Cat a;
a.Print();
a.Comemet();
cout<<a.tot<<endl;
return 0 ;
}
類和對象的方法和屬性大的互相調用問題
- 公有私有保護同樣適用類的屬性和類的方法(為什么不呢?)
- 類的屬性必須在主函數外進行初始化(必須初始化)
- 類方法和類屬性不能和對象方法和對象屬性重名。(會存在二義性的)
- 對象方法可訪問類方法和類屬性,類方法不能直接訪問對象方法和屬性( 只有制定一個對象才可訪問對象的方法和屬性)
/* 一 公有私有保護同樣適用類的屬性和類的方法 */
#include<cstdio>
#include<iostream>
using namespace std;
class Cat{
private:
static int tot;
static void Comemet(){
tot=100;
}
};
int Cat::tot=0;/*編譯*/
int main()
{
Cat::Comemet();/*編譯失敗 不能直接訪問私有方法 */
cout<<Cat::tot<<endl;/*編譯失敗 不能訪問直接直接私有成員 */
}
/* 二 類的屬性必須在主函數外進行初始化 */
#include<cstdio>
#include<iostream>
using namespace std;
class Cat{
private:
static int tot;
public:
static void Comemet(){
tot=100;
}
};
int Cat::tot=0;
int main()
{
return 0;
}
/* 三 類所屬內的所有函數和變量都不允許重名(函數重載的函數不重名)*/
#include<cstdio>
#include<iostream>
using namespace std;
class Cat{
private:
static int tot;
int tot;//編譯失敗 與Cat::tot沖突
public:
static void Comemet(){
tot=100;
}
static void Print(){
cout<<tot<<endl;
}
};
int Cat::tot=0;
int main()
{
return 0;
}
/*四 為了不產生二義性,所屬的對象能訪問直接類的內容*/
類的繼承
派生類和父類不是友元關系。
故父類的私有成員不能被派生類訪問
且父類的保護成員可以被派生類訪問
且父類的共有成員可以被類外的訪問
繼承訪問符作用如下所示

