Клас String з використанням операції new
Операція new часто використовується в конструкторах класів. Для прикладу ми модифікуємо клас String, з яким працювали, вивчаючи перезавантаження операцій. Ми можемо усунути можливий дефект цього класу, що виникає, коли всі його об’єкти займають однакову кількість пам’яті: при цьому замалі рядки даремно витрачають пам’ять, а завеликі можуть не поміститися. В програмі 20.16 ми використаємо операцію new для виділення точної кількості пам’яті.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<bios.h>
#include<string.h>
class String
{private:
char* str;
public:
String(char* s)
{int length=strlen(s);
str=new char[length+1];
strcpy(str,s);
}
~String()
{cout<<”Видалення рядка\n”;
delete[]str;
}
void display()
{cout<<str<<endl;
}
};
///////////////////
int main()
{clrscr();
String s1=”Пробна фраза”;
cout<<”s1=”;
s1.display();
return 0;
}
Програма 20.16
(Зверніть увагу, що повністю результат роботи програми можна оглянути, тільки завершивши її і перейшовши у вікно користувача).
Клас String має тільки одне поле str, що є вказівником на char. Він буде вказувати на рядок, що міститься в об’єкті класу String. Тут не буде масиву, який містить рядок. Рядок зберігається в іншому місці, а клас String містить лише вказівник на нього.
Дата добавления: 2015-08-26; просмотров: 668;