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

Класс как аргумент своего же метода - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ OLE и C++ http://www.cyberforum.ru/cpp-beginners/thread560415.html
Привет всем. У меня стоит задача вычислить значение функции(задаваемой пользователем) в программе. Можно ли для этого использовать OLE? В частности, если пользователь наберет формулу в Excel, а в...
C++ помогите решить задачу на строковые переменные, заданы 2 строки,состоящие из слов,разделенных пробелами.Определить местоположение символа первой строки,который первым совпал с одним из символов второй строки.Приписать ко второй строке часть... http://www.cyberforum.ru/cpp-beginners/thread560414.html
C++ Снова Pacman
Доброго времени суток, господа! Прошу помочь советом начинающему. Суть проблемы: в pacman'е собственного изготовления все вроде бы работает, но плохо осуществляется поворот персонажа в нужную...
Определить, находиться ли точка внутри треугольника C++
заданы координаты х1, y1, x2, y2, x3, y3 вершин треугольника и координаты точки х, y.Определить и напечатать, или находиться точка внутри треугольника...
C++ После каждого найденного слова добавлять перевод строки и сохранять в текстовый файл http://www.cyberforum.ru/cpp-beginners/thread560404.html
смысл такой, нужно чтобы он после каждого найдего слова делать энтер и сохранять в текстовик(ну как это делать я знаю), не получаеться написать цикл.. вот мой исхолдник: #include <iostream>...
C++ Взаимосвязанные классы. Объявление есть два класса океан и клетка. Нужно их описать. Хочу сделать это в рамках одного .h файла в одном и том же пространстве имён Game проблема: класс Ocean имеет в своём составе двумерный массив из... подробнее

Показать сообщение отдельно
alkagolik
Заблокирован

Класс как аргумент своего же метода - C++

27.04.2012, 19:42. Просмотров 405. Ответов 2
Метки (Все метки)

В примере ниже происходит лишний (по замыслу не нужный) вызов деструктора. Вопрос в следующем: как в методе класса в качестве аргумента передавать объект этого же типа (класса)? Может просто деструктор неграмотно составлен? В данном примере происходит двойное освобождение памяти, выделенной для объекта foo y (в методе add( foo y ) ).
пример
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
32
33
34
35
36
37
38
39
#include <iostream>
#include <iomanip>
typedef unsigned int my_type;
const my_type siz = 5;
 
class foo {
    private:
        int *x;
    public:
        foo(){
            x = new int[ siz ];
            for ( my_type i = 0; i < siz; ++i )
                x[ i ] = i;
        }
        ~foo(){
            delete [] x;
        }
 
        void add( foo y ){
            for ( my_type i = 0; i < siz; ++i )
                x[ i ] += y.x[ i ];
        }           /********* тут вызывается деструктор foo y *********/
 
        void print_foo(){
            for ( my_type i = 0; i < siz; ++i )
                std::cout << std::setw( 3 ) << x[ i ];
            std::cout << std::endl;
        }
};
 
int main() {
 
    foo a, b;
    a.print_foo();
    b.print_foo();
    a.add( b );
    a.print_foo();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru