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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
#1

Проблемы кода - C++

18.10.2012, 23:01. Просмотров 251. Ответов 2
Метки нет (Все метки)

Добрый день!
Вопрос предельно прост, перечислите, пожалуйста все проблемы данного кода
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
    
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};
 
class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 23:01     Проблемы кода
Посмотрите здесь:

C++ Проблемы с gets
Проблемы с C++ C++
C++ Проблемы с циклами
C++ Проблемы с STL
Проблемы с ответом C++
Проблемы с ответом C++
Проблемы с кодом C++
C++ Проблемы с компиляцией
C++ Проблемы с pow()
C++ Проблемы с наследованием
C++ Проблемы с графикой
C++ Проблемы с программой

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
18.10.2012, 23:05     Проблемы кода #2
C++
1
class Bar: Foo
А тип наследования?
Croessmah
Модератор
Эксперт CЭксперт С++
12731 / 7191 / 802
Регистрация: 27.09.2012
Сообщений: 17,738
Записей в блоге: 2
Завершенные тесты: 1
19.10.2012, 02:08     Проблемы кода #3
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
//Нет конструктора копирования и перегрузки оператора присваивания (будут проблемы)
class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }//Выделяете массив, а освобождаете один элемент
private:
    int* i;
};
 
class Bar: Foo//Тип наследования public,protected,private
{
public:
    //В базовом классе нет конструктора по умолчанию
    Bar(int j) {i=new char[j]; }
    ~Bar() { delete i; }//Выделяете массив, а освобождаете один элемент
private:
    char* i;
};
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);//Если тип наледования не public, то будет ошибка
    *f=*b;//b скопируется в f в результате указатели i в объектах будут указывать на одну и ту же облать памяти
     //Будет утечка памяти.
     //Здесь двойной delete
    delete f;
    delete b;
}
вроде все, но кто его знает
Yandex
Объявления
19.10.2012, 02:08     Проблемы кода
Ответ Создать тему
Опции темы

Текущее время: 00:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru