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");
}
C++:类的静态类成员
最新推荐文章于 2022-11-10 20:53:51 发布