Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 01.04.2016
Сообщений: 12
1

Какие ошибки есть в коде и что можно улучшить?

07.11.2016, 11:57. Просмотров 1271. Ответов 9
Метки нет (Все метки)


Всем привет, есть вот такой код, подскажите, что у меня здесь не правильно и что можно было бы написать лучше(с точки зрения сложности кода, ООП, обработки исключений и т.д.). Любые замечания. Заранее благодарю.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
class Base
 
{
 
public:
 
Base()
 
: m_defaultAnswer(new int(0))
 
{}
 
virtual int result() = 0;
 
int * GetDefaultAnswer()
 
{
 
return m_defaultAnswer;
 
}
 
 
 
~Base()
 
{
 
delete m_defaultAnswer;
 
}
 
private:
 
int * m_defaultAnswer;
 
};
 
class Derived : public Base
 
{
 
public:
 
Derived(int i)
 
: m_i(i)
 
{
 
}
 
int result()
 
{
 
int res = 0;
 
if (m_i != 0)
 
{
 
res = m_i * m_i;
 
}
 
else
 
{
 
res = *GetDefaultAnswer();
 
}
m_i = 0;
 
return res;
 
}
 
~Derived()
 
{
 
if (m_i != 0)
 
{
 
throw new std::exception("Bad parameter");
 
}
 
}
 
private:
 
int m_i;
 
};
 
int func(int i)
 
{
 
Base * obj = new Derived(5);
 
if (!obj)
 
{
 
throw new std::exception("bad");
 
}
 
int res = obj->result();
 
delete obj;
 
return res;
 
}
 
int main()
 
{
 
try
 
{
 
int result = func(5);
 
std::cout << result;
 
std::cin.get();
 
}
 
catch(std::exception * ex)
 
{
 
delete ex;
 
return 1;
 
}
 
return 0;
 
}
Добавлено через 12 часов 10 минут
Здесь кто нибудь есть?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 11:57
Ответы с готовыми решениями:

Какие есть ошибки в коде
#include <iostream> using namespace std; class A { int num1, num2; public: A(int i)...

Какие есть ошибки в коде?
Добрый день. Сейчас было небольшое собеседование и одна из задачек была такая /* What problems do...

Что можно оптимизировать или улучшить в приведенном коде
using System; using System.Collections.Generic; namespace ConsoleApplication1 { public...

Создание матричной алгебры, что можно улучшить в коде?
Дан код программы на C++ создающий классы матриц и методы для работы с ними. Программа работает....

9
14011 / 7499 / 1774
Регистрация: 30.01.2014
Сообщений: 12,552
07.11.2016, 12:05 2
Цитата Сообщение от Agafio46 Посмотреть сообщение
что у меня здесь не правильно и что можно было бы написать лучше
Здесь все неправильно, если честно.
Это ведь код с какого-то сайта, данный в качестве контрольного задания для соискателей? Я просто не верю, что так можно написать не специально. Да и кавычки, скобочки угловые экранированные html-кодами как бы намекают на копи-паст со страницы.
0
0 / 0 / 0
Регистрация: 01.04.2016
Сообщений: 12
07.11.2016, 12:19  [ТС] 3
Да, вы правы, это задание которое нам выдали на курсах. Но пака, что слишком сложно для меня. Только какие то простые вещи только, понимаю, что не правильно. Очень нужна ваша помощь.

Добавлено через 4 минуты
Хотя бы намекните
0
14011 / 7499 / 1774
Регистрация: 30.01.2014
Сообщений: 12,552
07.11.2016, 12:43 4
Цитата Сообщение от Agafio46 Посмотреть сообщение
Хотя бы намекните
Если полноценно расписывать ошибки, даже касаясь только базовых вещей, то уйдет не меньше 40 минут на написание поста.
Я днем такое время тратить не готов.
Вечером, возможно (возможно), напишу.
А пока может другой кто согласится.
0
2402 / 1806 / 396
Регистрация: 15.12.2013
Сообщений: 7,755
07.11.2016, 12:49 5
Делать за кого-то задание для курсов? Не стану принципиально.

Agafio46, хотите чтобы вам помогли - спросите конкретный вопрос или выскажете аргументированное предположение.
0
0 / 0 / 0
Регистрация: 01.04.2016
Сообщений: 12
07.11.2016, 13:01  [ТС] 6
Хорошо. В девятой строке опасно ли выделение памяти в списке инициализации или здесь никаких проблем быть не должно?
0
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
07.11.2016, 13:45 7
А какую хоть задачу код решает?

У вашего копи-паста жесть полная.
0
2402 / 1806 / 396
Регистрация: 15.12.2013
Сообщений: 7,755
07.11.2016, 13:47 8
Цитата Сообщение от Kant Посмотреть сообщение
А какую хоть задачу код решает?
вот эту:
Цитата Сообщение от DrOffset Посмотреть сообщение
Это ведь код с какого-то сайта, данный в качестве контрольного задания для соискателей?
1
14011 / 7499 / 1774
Регистрация: 30.01.2014
Сообщений: 12,552
07.11.2016, 19:02 9
Лучший ответ Сообщение было отмечено Agafio46 как решение

Решение

Цитата Сообщение от Agafio46 Посмотреть сообщение
В девятой строке опасно ли выделение памяти в списке инициализации или здесь никаких проблем быть не должно?
Проблемы, ну, по крайней мере, на данный момент нет - до тех пор, пока в классе не появится еще один объект, выделяемый динамически. Если под этот второй объект не будет выделена память, или его конструктор (если это объект класса) бросит исключение, то память для первого объекта будет утеряна - утечка. Умные указатели помогут в этой ситуации. А вообще здесь логическая ошибка, т.к. в данном месте использовать динамическое выделение памяти совершенно незачем.

В общем вместо написания объемного поста, я посоветую книжку: "Стандарты программирования на C++", Саттер, Александреску. В ней почти все ошибки, сделанные в этом коде, описаны и даны рекомендации по их устранению. Это будет полезнее и тебе, и не потратит зря наше время на расписывание вещей, которые уже десятки раз обсуждались.
1
0 / 0 / 0
Регистрация: 01.04.2016
Сообщений: 12
07.11.2016, 20:43  [ТС] 10
Ок, спасибо за совет)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2016, 20:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Можете сказать есть в коде ошибки или какие-то советы?
#include <iostream> #include <conio.h> #include <string> using namespace std; bool...

Какие ошибки в коде, и что сделать чтобы он заработал?
Здравствуйте, тут одна проблемка возникла. Хочу сделать скрипт, меняющий цвет фона при прокрутке...

Подскажите пожалуйста какие ошибки здесь есть - или что не соблюдено.
Доброе утро! Я начинаю только осваивать программирование.Читаю - решаю задачи - пытаюсь...

Не копируются изображения на хостинге с компьютера пользователя. Подскажите, что не верно или какие есть ошибки
$result=mysql_query($sql); $path = 'myfamilytree.byethost7.com/adminpanel/upload/'; // директория...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.