C++:类的静态类成员

01:示例
#include <iostream>

class StringBad
{
private:
    char * m_pStr;            // pointer to string
    int    m_nLen;            // length  of string

    static int nNum_strings;  // number  of objects

public:
    StringBad(const char * szStr);

    StringBad(){}
    ~StringBad();

    friend std::ostream & operator<<(std::ostream &os,const StringBad & st);
};

// 
StringBad::StringBad(const char * szStr)
{
    int nLen = strlen(szStr);
    m_pStr   = new char[nLen+1];
    strcpy_s(m_pStr,nLen+1,szStr);  // 注意:p2为新分配内存空间的大小,不能为sizeof(m_pStr);

    nNum_strings++;

    cout<<"Create a object:"<<m_pStr<<endl;
    cout<<"num of object:"<<nNum_strings<<endl;
}

StringBad::~StringBad()
{
    cout<<"Delete a object:"<<m_pStr<<endl;
    --nNum_strings;

    delete [] m_pStr;
}

std::ostream & operator<<(std::ostream &os,const StringBad & st)
{
    os<<st.m_pStr<<endl;
    return os;
}

/**
 * 静态数据成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域操作符来指出静态成员所属的类。但如果静态成员是整型或者枚举型const,则可以在类声明中初始化.
 */
int StringBad::nNum_strings = 0;

int main(void)
{
    StringBad a("string_a");
    StringBad b("string_b");
    StringBad c("string_c");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值