メモリ割り当てに関して、コードのこれら 3 つの部分に問題があります。まだ手に入れていません。
私が間違っていることと、それを修正する方法を教えてください。
1:
class MyString {
public:
MyString() : str(0) {}
MyString( char *a )
{ str = new char[strlen(a)+1]; strcpy(str,a); }
~MyString() { delete[] str; }
private:
char *str;
friend ostream& operator<<(ostream &os, const MyString &str);
};
ostream& operator<<(ostream &os, const MyString &s)
{
return os << s.str << endl;
}
int main()
{
MyString str("Mitt namn");
MyString *strp = &str;
// alot of code
delete strp;
// alot of code
}
2: 上記のように定義
int main()
{
MyString *str1 = new MyString("Mitt namn");
MyString str2 = *str1;
delete str1;
// alot of code
cout << str2 << endl;
}
3: 上記の定義のまま
class MyASCII : public MyString {
public:
MyASCII( char *a) : MyString(a), ascii(0)
{
if (a==0) return;
ascii = new int[strlen(a)];
for (int i=0; i<strlen(a); i++)
ascii[i] = int(a[i]);
}
~MyASCII() { delete[] ascii; }
private:
int *ascii;
};