C++待用資料成員/靜態函數成員總結

來源:互聯網
上載者:User

++待用資料成員/靜態函數成員總結

一、待用資料成員
1.幾種錯誤用法總結
class A
{
    static int a;
    void test()
    {
        int b = a;//錯誤,因為沒有定義a,會提示找不到a
    }
}class A
{
    static int a = 2;//錯誤,非const待用資料成員不能在類體中初始化
}class A
{
    static const int a = 2;
    void test()
    {
        int b = a;//錯誤,雖然static const成員變數可以再類體中初始化,但仍需要在類外定義,且不能再次初始化
    }
}const A::a[4];
class A
{
    static const char a[4] = "err";//錯誤,只有有序的const待用資料成員可在類體中初始化
}2.正確用法例子:
int A::a = 2;
const int A::b;
const int A::c("err");
class A
{
    static int a;
    static const int b = 2;
    static const char c[5];
}3.可以通過const方法修改待用資料成員的值。
如果是public待用資料成員,也可以通過對象或者類域修改。4.待用資料成員所有類共用,包括子類5.不要在標頭檔中定義待用資料成員,否則可能會出現多次定義情況。6.待用資料成員可以成為成員函數的選擇性參數,而普通資料成員則不可以7.待用資料成員的類型可以是所屬類的類型,而普通資料成員則不可以。普通資料成員的只能聲明為所屬類類型的指標或引用
class A
{
    static A a;//可以
    A b;//不可以
}二、靜態函數成員1.只能訪問待用資料成員2.靜態成員函數不能同時聲明成const, virtual,volatile類型。3.靜態成員函數的地址可用普通函數指標儲存,而普通成員函數地址需要用類成員函數指標來儲存。
class A
{
    static int func1();
    int func2();
}int (*psf)() = &A::func1;
int (A::*pf)() = &A::func2;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.