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

Класс линия - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перевод из 16 сс в 4 сс http://www.cyberforum.ru/cpp-beginners/thread770855.html
Помогите пожалуйста написать программу на C++ по переводу из 16 сс в 4 с дробными числами, а то я не очень понимаю как это сделать, недавно начал изучать этот язык. Добавлено через 1 час 16 минут #include <iostream> #include <math.h> using namespace std; int main() {double Number, b, c; int a, d, i, j=0, k;
C++ Попадание в Морском Бою #include <iostream> #include <ctime> #include <clocale> #include <stdlib.h> #include <conio.h> #include <locale.h> using namespace std; enum direction{h,v}; class Player { http://www.cyberforum.ru/cpp-beginners/thread770851.html
C++ Нужно прочитать со входного потока число и строку, как проигнорировать лишние символы?
Всем привет! Со входного потока нужно прочитать число, а затем в новой строке string... Гугл мне сказал, что после того, как мы ввели число, в буфере остаётся символ '\n'. Пишу: #include <iostream> #include <string> ... int main () {
C++ Определение учетной записи, из-под которой был скопирован файл в сеть
Добрый времени суток, коллеги! На сетевой диск сохраняется файл. В свойствах файла присутствует информация о разрешениях для групп пользователей, имеющих к нему доступ. Также в списке представлено имя учетной записи, из-под которой было осуществлено копирование. Пожалуйста, подскажите, как средствами c++ получить имя этой учетной записи?
C++ Матрица 8х8 как подправить? http://www.cyberforum.ru/cpp-beginners/thread770790.html
Вот мое задание: 1.Для данной матрицы размером 8x8, найти такие k, что k-ая строка матрицы совпадает с k-ым столбцом. 2.Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент. Собственно написал программу, но вот не пойму почему вот такие ошибки при ее выполнении: 1) при вводе всех положительных элементов программа не работает 2) При вводе элемента с...
C++ Класс стек что не так? Компилятор ругается, что в конструкторе элемент массива объявлён в раз. как такое может быть он же в классе объявлён и видимость прописана. Кстати, это не единственное на что он жалуется. Не понимаю что не так? Код: # include <iostream> # define SIZE 26; using namespace std; class stack { char stck ; int tos; подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
29.01.2013, 12:55     Класс линия
Цитата Сообщение от extenup Посмотреть сообщение
Тебе в классе не нужен деструктор, так-как у тебя в классе нет динамического выделения памяти
Одно с другим не связано. Деструктор совершает финализацию, которая необходима перед фактическим уничтожением объекта. Ведь закрытие файла напрямую не связано с очисткой выделенной памяти (хотя ясное дело, где-то в дебрях библиотечного кода при открытии файла некоторая память выделяется, но если учитывать абстракцию, то программисту не важно, как это происходит внутри; ему важно, что когда он просит открыть файл, то файл открывается), однако поместить данную операцию в деструктор не будет неправильным.
Так что если логика приложения требует, чтобы при уничтожении объекта уничтожалась вся информация, связанная с ним (в данном случае визуальное отображение объекта в виде линии на экране), то данные действия следует поместить именно в деструктор (напрямую или косвенно, через метод скрытия линии с экрана, например).

Добавлено через 10 минут
Если уточнить это:
Цитата Сообщение от Croessmah Посмотреть сообщение
malloc выделяет сырую память, в отличие от new
то главное отличие malloc от new - malloc не вызывает конструктор объекта, поскольку для выделения памяти не использует информацию о типе, а только о количестве требуемых байтов.
Вообще, если хочется, чтобы деструктор вызывался, без new не обойтись. Обычную последовательность new-delete можно заменить последовательностью malloc-placement new-destructor call-free примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <cstdlib>
 
class Foo
{
public:
    Foo()
    {
        std::cout << "Foo::Foo()" << std::endl;
    }
    
    ~Foo()
    {
        std::cout << "Foo::~Foo()" << std::endl;
    }
};
 
int main()
{
    Foo *bar1 = new Foo();
    
    delete bar1;
    
    Foo *bar2 = static_cast<Foo *>(malloc(sizeof(Foo)));
    new (bar2) Foo();
    
    bar2->~Foo();
    free(bar2);
    
    return 0;
}
http://liveworkspace.org/code/2NcCvT$1
Как видно по выполнению кода, результаты выполнения обычного new-delete и malloc-free аналогичны. Однако никакого смысла или выгоды в этом не вижу. Placement new хорош при написании собственных менеджеров памяти, когда необходимо разнести операции выделения памяти и вызова конструктора, а также операции вызова деструктора и освобождения памяти.
 
Текущее время: 06:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru