IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> выявление слабых мест в коде, С++
сообщение
Сообщение #1


Гость






Здравствуйте.
Получили такое вот задание, немного не привычное - не напписать простенькую программу или типо того, а найти "проблемы" в данном програмном коде. Как я понимаю, нужно посмотреть на код и выявить как ошибки так и не достатки видные с полета профессионального или опытного программиста. Простите, но я кроме парочки претензий к конструкторам да и то не сильно обоснвоанных ничего не увидел. прошу помочь, нужно срочно.#include<iostream>

class Foo
{
public:
Foo(int j) { i=new int[j]; s = j}
~Foo() { delete i; }
private:
int* i;
int s;
};

class Bar: Foo
{
public:
Bar(int j) { i=new char[j]; }
operator>> (Bar b) { for (int k = 0; k < s; k++) { cout << b.i[k] << " "; } }
~Bar() { delete i; }
private:
char* i;
};

int main()
{
int i;
cin>>i;
for(int j=100;j<-100;j--);
{
if(j%3=0)
i+=i++ + ++i;
}

Foo* f=new Foo(i);
Foo* b=new Bar(j);
*f=*b;
delete f;
delete b;
}
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






По Стандарту этот код вообще не будет компилироваться:
1) operator >> это функция, и надо указывать ее тип, у тебя этого не сделано (кстати, перегрузка операции ввода для класса, описанная в самом классе, да еще и в которой производится вывод элементов - это очень "сильный" ход...);
2) при инициализации наследника не производится инициализация предка (у предка нет конструктора без параметров)

"Пустые" (ничего не выполняющие) циклы, проблемы с уровнями доступа - обращение к частным членам предка в потомке. У тебя, кстати, вообще не общее, а частное наследование:
class Bar: Foo {

аналогично
class Bar: private Foo {

Так что ты меня извини, но искать недочеты можно в программе, которая хотя бы успешно компилируется, а не в той, которая валится на этапе компиляции. Тут речь идет уже не о "проблемах", а об обычных синтаксических ошибках, выявить которые помогает любой более или менее соответствующий Стандарту компилятор.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.06.2024 9:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name