Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Деструкторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу понять как написать в switch - если значение не действительно http://www.cyberforum.ru/cpp-beginners/thread657405.html
Не могу понять как написать в switch statement "Error - the day you entered is not valid". Стоит задача: Написать программу, которая запрашивает значение месяца и дня. Принимает значения...
C++ Обработка символьной информации.Гороскоп Прошу помощи с решением задачи.Буду очень благодарен. Суть такова-при вводе года(любой комбинации чисел), программа должна выдавать цвет и животное этого года. #include <iostream.h> #include... http://www.cyberforum.ru/cpp-beginners/thread657403.html
Разложение числа на простые множители (упрощенная). Зацикливание? C++
Добрый вечер. Написал небольшой код для разложения небольших чисел на простые цифры. По умолчанию число, которое подается на ввод, делится на простые цифры (никаких 13, 17 и проч.). Если нужно,...
C++ С чего всё начиналось.(или первые программы)
Здравствуйте уважаемые программисты, хотелось бы узнать, кто с чего начинал программировать, каков был первый опыт, сколько сил ушло на написание первых программ и какие именно это были программы....
C++ Внешний интерфейс http://www.cyberforum.ru/cpp-beginners/thread657393.html
Здравствуйте, помогите сделать внешний интерфейс по задаче "Все четные элементы целочисленного массива К поместить в массив 1, а нечетные — в массив 2. Подсчитать количество тех и других."...
C++ Описание класса Подскажете как сделать задание, а то это ппц, ничего не выходит, кучу всякого перечитал, примеры ставил... плз хелп Значение строки (заглавные буквы), конструктор по умолчанию с введением строки,... подробнее

Показать сообщение отдельно
DJames-
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 12

Деструкторы - C++

24.09.2012, 21:20. Просмотров 443. Ответов 3
Метки (Все метки)

Всем доброго времени суток! Возникли некоторые непонятки с деструкторами, а точнее их время вызова и механизм работы.

Вот код:

#include <iostream.h>
#include <conio.h>

class String
{
public:
String();
String(char*);
~String();

friend ostream &operator<<(ostream &,String );
friend istream &operator>>(istream &,String &);
private:
char* ln;
int sizeln;
};

String::String()
{
ln = new char [256];
sizeln = 256;
cout << "Empty Constructor called!" << endl;
}
String::String(char *sPtr)
{
sizeln = strlen(sPtr);
ln = new char [sizeln];
ln = sPtr;
cout << "Constructor with parameters called!" << endl;
}
String::~String()
{
delete [] ln;
cout << "Destructor called!" << endl;
}
ostream &operator<<(ostream &out,String s1)
{
out << s1.ln << endl;

return out;
}
istream &operator>>(istream &in,String &s)
{
in.getline(s.ln,256);
s.sizeln = strlen(s.ln);

return in;
}

main()
{
String s1 = "Operators"; //Constructor with parameters called
String s2 = "on cpp"; //Constructor with parameters called
String s3,s4; //Empty Constructor called

cout << s1 << s2; //two destructors called

cin >> s3 >> s4;

cout << s3 << s4; //two destructors called

getch();

return 0;
}
//all destructors called

Непонятно почему при команде cout вызывается деструктор, хотя строка не обнуляеться.
И вообще хотелось бы услышать общую оценку о программе. Мне кажется что я неправильно использую операторы new и delete и деструкторы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru