假設我們要開發一個String類,它可以方便地處理字符串數據。我們可以在類中聲明一個數組,考慮到有時候字符串極長,我們可以把數組大小設為200,但一般的情況下又不需要這麼多的空間,這樣是浪費了內存。對了,我們可以使用new操作符,這樣是十分靈活的,但在類中就會出現許多意想不到的問題,本文就是針對這一現象而寫的。現在,我們先來開發一個Wrong類,從名稱上看出,它是一個不完善的類。的確,我們要刻意地使它出現各種各樣的問題,這樣才好對症下藥。好了,我們開始吧!
Wrong.h:
#ifndef WRONG_H_
#define WRONG_H_
class Wrong
{
private:
char * str; //存儲數據
int len; //字符串長度
public:
Wrong(const char * s); //構造函數
Wrong(); // 默認構造函數
~Wrong(); // 析構函數
friend ostream & operator<<(ostream & os,const Wrong& st);
};
#endif
Wrong.cpp:
#include <iostream>
#include <cstring>
#include "wrong.h"
using namespace std;
Wrong::Wrong(const char * s)
{
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}//拷貝數據
Wrong::Wrong()
{
len =0;
str = new char[len+1];
str[0]='