1、动态内存和类
(1)静态类成员
class stringBad
{
private:
char * str;
int len;
static int num_strings;//静态成员变量
public:
StringBad(const char * s);
};
//类外初始化静态变量
int StringBad::num_strings = 0;
特点:
1、无论创建了多少个对象,程序都只创建一个静态类变量副本。即所有对象共享同一个静态成员。
2、不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。
3、可以在类声明之外使用单独的语句进行初始化,因为静态类成员是单独存储的,而不是对象的组成部分。
4、初始化时不适用关键字static
5、静态数据成员在类声明中声明,在包含类方法的文件中进行初始化。初始化时使用作用域运算符来指出静态成员所属类。
6、如果静态成员时整形或枚举型const,则可以在类声明中初始化
(2)动态内存分配
StringBad::StringBad(const char * s)
{
len = std::strlen(s);
str = new char[len+1];
std::strcpy(str,s);
num_strings