c++調用類成員和屬性的幾種方法


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 ;
}

類和對象的方法和屬性大的互相調用問題

  1. 公有私有保護同樣適用類的屬性和類的方法(為什么不呢?)
  2. 類的屬性必須在主函數外進行初始化(必須初始化)
  3. 類方法和類屬性不能和對象方法和對象屬性重名。(會存在二義性的)
  4. 對象方法可訪問類方法和類屬性,類方法不能直接訪問對象方法和屬性( 只有制定一個對象才可訪問對象的方法和屬性)
/* 一 公有私有保護同樣適用類的屬性和類的方法 */
#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;
}

/*四 為了不產生二義性,所屬的對象能訪問直接類的內容*/

類的繼承

派生類和父類不是友元關系。

故父類的私有成員不能被派生類訪問

且父類的保護成員可以被派生類訪問

且父類的共有成員可以被類外的訪問

繼承訪問符作用如下所示

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM