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

Не вызывается деструктор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти число расположений N ферзей на шахматной доске размером N*N http://www.cyberforum.ru/cpp-beginners/thread887029.html
Необходимо расположить N ферзей так, чтобы ни один из них не был под ударом, то есть по одному на каждый столбец, каждую строку и каждую диагональ. Я думаю, что это возможно только тогда, когда один ферзь отстоит от другого на ход коня (на 1 или 2 столбца и 2 или 1 строку). Сам алгоритм мне ясен, но программа не работает (проходит цикл определенное количество раз и выдает необработанное...
C++ Рекурсия (вывести значение целочисленного выражения, заданного в виде строки S) Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом: <выражение>::=<цифра> | (<выражение><знак><выражение>) <знак>::= + | – | * Эту задачу нужно решить с помощью рекурсии. Кто может объяснить что это такое и как его есть? Задачу. http://www.cyberforum.ru/cpp-beginners/thread887001.html
Сумма ряда, ошибка C++
Я не мега-прогер, так что не судите... Вылетает ошибка. expected 'while' before numeric constant. expected ')' before ';' token. Вот сам код. #include <iostream> #include <math.h> #include <iomanip>
C++ Заданную строку перевести в массив из слов
Всем привет, вот дан string предложение, нужно все это перевести в массив из слов . Что можно сделать?
C++ Быстро возвести в квадрат число заданной длины (<16 байт) http://www.cyberforum.ru/cpp-beginners/thread886980.html
Нужно быстро возвести в квадрат число заданной длины (<16 байт). Лучшее, что я пока придумал -- это делить число на 2 маленьких по формуле: (a+bx)^2=2(\frac 12a^2+abx+\frac 12b^2x^2), где умножение, деление на 2 -- просто сдвиг на 1. Я сначала делю, а потом умножаю, чтоб в месте abx не было переполнения. Тут x=2^{32}. После этого я числа a^2, b^2 считаю по такой же формуле (рекуррентно), а числа...
C++ почему не добавляет элемент? insert() должен добавить один элемент,но он неправильно работает,где ошибка? #include "stdafx.h" #include <iostream> using namespace std; void Insert(const int index,const int value,int * arr,const int size); int _tmain(int argc, _TCHAR* argv) { int * arr=new int; for(int i=0;i<10;i++) подробнее

Показать сообщение отдельно
Гром
 Аватар для Гром
199 / 118 / 10
Регистрация: 20.03.2009
Сообщений: 1,075
Записей в блоге: 15
01.06.2013, 11:00     Не вызывается деструктор
На самом деле полностью конструктор копирования у вас должен иметь вид:
C++
1
2
3
4
5
SimpleCat::SimpleCat(SimpleCat& cat):
itsAge(cat.itsAge)
{
    cout << " SimpleCat copy constructor...\n"; 
}
Иначе ничего толкового он не сможет сделать.

Добавлено через 11 минут
Да, и в конструкторе по умолчанию тоже настоятельно рекомендую использовать список инициализации. Для int это может еще и ничего, а вот для более сложных типов это чревато излишними накладными расходами или и вовсе ошибками компиляции, т.к. запись типа
C++
1
2
3
4
Class1::Class1():
 {
 var1 = 1;
 }
эквивалентна записи
C++
1
2
3
4
5
6
7
Class1::Class1:
 var1()   //конструктор копирования все равно вызывается, если в классе, 
   //которому принадлежит var1 его нет, будет ошибка компиляции
 {
 var1 = 1;   //к уже сконструированной переменной-члену var1 применяется operator=,
   //что влечет дополнительные накладные расходы
 }
Присоединяюсь к мнению о предании забвению книг типа "[сделай то, чему умные люди посвящают годы] за 21 день". Лучше сделать это как можно раньше, чтобы потом не пришлось переучиваться. Как вариант, можно почитать Страуструпа - для изучения языка с нуля он, пожалуй, сложен, но коль скоро вы уже имеете навыки в работе с ним, вполне должны освоить.
 
Текущее время: 17:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru