12.1 动态内存和类
#ifndef D1_STRINGBAD_H
#define D1_STRINGBAD_H
#include <iostream>
class stringbad {
private:
char * str;
int len;
static int num_strings; //静态成员变量,只创建一个静态副本
public:
stringbad(const char *s );
stringbad();
~stringbad();
friend std::ostream &operator<<(std::ostream &os, const stringbad &st);
};
#endif //D1_STRINGBAD_H
#include "stringbad.h"
#include <cstring>
using std::cout;
int stringbad::num_strings = 0; //初始化静态变量成员,单独初始化
stringbad::stringbad(const char *s) //构造函数
{
len = std::strlen(s);
str = new char[len + 1];
std::strcpy(str,s);
num_strings++;
cout << num_strings << ": \"" << str << "\" object created\n";
}
stringbad::stringbad() //默认构造函数
{
len = 3;
str = new char[4];
std::strcpy(str,"C++");
num_strings&#