С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Beluga
1 / 1 / 0
Регистрация: 06.07.2012
Сообщений: 8
#1

Реализация классов - C++

27.07.2012, 11:29. Просмотров 1236. Ответов 5
Метки нет (Все метки)

Помогите, пожалуйста, с 2-мя заданиями!
1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 class A
{
public:
    A();
    ~A();
 
private:
    D m_data;
};
//////////////////////////////////////////////////////////////////
class B: public class A
{
public:
    B();
    ~B();
 
private:
    D m_data2;
};
//////////////////////////////////////////////////////////////////
инициализируем объект класса А следующим образом:

C++
1
2
3
4
5
6
int main()
{
    A* a = new B();
    delete a;
    return 0;
};
Что нужно изменить в коде задания, чтобы деструктор вызвался?

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
28
class cString
{
public:
    cString(const char* data)
    {
        m_data = new char[strlen(data) + 1];
        strcpy(m_data, data);
    };
 
    ~cString()
    {
        delete m_data;
    }
 
    inline char* GetCString()
    {
        return m_data
    };
 
private: 
    char* m_data;
}
//////////////////////////////////////////////////////////////////
void Out(cString string)
{
    cout<<string.GetCString())<<endl;
};
//////////////////////////////////////////////////////////////////
Что выведется на экран в следующей реализации? Будут ли какие-то ошибки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//////////////////////////////////////////////////////////////////
int main()
{
    cString s1(“string 1);
    cString s2(“string 2);
    cString s3 = s1;
 
    Out(s1);
    Out(s2);
    Out(s3);
 
    return 0;
}
На экран будут выведены строки:
string 1
string 2
а далее возникнет ошибка

Что нужно изменить в коде задания 3, чтобы не было ошибки и результат соответвовал ожидаемому (исходя из здравого смысла).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 11:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация классов (C++):

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Реализация классов чисел - C++
есть задача по реализации 2 классов действительно и комплексного числа, при дебаги возникают непонятные мне ошибки хелп. # include...

Реализация собственных классов - C++
Разработать прогнрамму, демонстрирующую работу с объектами 2х типов: Triangle(треугольник) и Quadrate(квадрат ).Каждый объект должен иметь...

Реализация классов integer, double - C++
Есть задания реализовать класс integer,double,char производные от абстрактного класса Number. Определить между этими классами все...

Реализация списка + Шаблоны классов - C++
Всем добрый день, есть не большая проблема с реализацией списка с помощью шаблонов класса. Далеко не профи я :) Тоже самое смог сделать...

5
David Sylva
1291 / 953 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
27.07.2012, 11:41 #2
Исходя из здравого смысла было бы неплохо написать условие задач и при написании сообщения форматировать его.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.07.2012, 11:47 #3
Цитата Сообщение от Beluga Посмотреть сообщение
Что нужно изменить в коде задания, чтобы деструктор вызвался?
сделать деструктор виртуальным

Добавлено через 1 минуту
Цитата Сообщение от Beluga Посмотреть сообщение
Что нужно изменить в коде задания 3, чтобы не было ошибки и результат соответвовал ожидаемому (исходя из здравого смысла).
переопределить конструктор копирования и оператор присваивания
1
Beluga
1 / 1 / 0
Регистрация: 06.07.2012
Сообщений: 8
27.07.2012, 12:35  [ТС] #4
Цитата Сообщение от David Sylva Посмотреть сообщение
Исходя из здравого смысла было бы неплохо написать условие задач и при написании сообщения форматировать его.
)) Понимаю. Но пишу ровно так, как описаны сами задачи
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
27.07.2012, 12:47 #5
Jupiter, а так ли нужно изменять оператор присваивания? Разве это :
C++
1
2
MY_STRING a("okey");
MY_STRING b = a;
вызывает хотя бы раз оператор? Разве здесь не конструктор от с-строки и конструктор копирования?

Добавлено через 10 минут
*если, конечно, не учитывать "правило большой тройки"*
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.07.2012, 12:52 #6
nexen, в данном коде оператор присваивания не вызывается, но есть и правила хорошего тона, а именно: если в классе явно определен деструктор то следует явно определить конструктор копирования и оператор присваивания. При чем это правило взаимно-однозначно т.е. если в классе явно опреден оператор присваивания то следует явно определить деструктор и конструктор копирования, и т.д. С выходом нового стандарта это правило ещё и расширяется для rvalue.

Добавлено через 45 секунд
Цитата Сообщение от nexen Посмотреть сообщение
*"правило большой тройки"*
ну вот сам все и нашел)
1
27.07.2012, 12:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2012, 12:52
Привет! Вот еще темы с ответами:

ООП реализация сложных классов - C++
Вот задание как реализуется сложный класс“база-сектор” (дуга+радиус+радиус) , в которых класс “фигура” должен присутствовать в...

Реализация программы с помощью классов - C++
Здравствуйте, коллеги-программеры! Обращаюсь к Вам с таким вопросом. У меня есть написанная мной неплохая демка, с использованием...

Реализация классов вектор и строка - C++
Для лабораторной работы нужно было написать свою реализацию классов вектор и строка. Выкладываю что получилось, может, кому пригодится. ...

Односвязный список (реализация без классов) - C++
Задача проста: создать список из слов, вводимых с клавиатуры, и вывести его на консоль. Всё вводит и выводит. Только откуда-то взялась &quot;Д&quot;...


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

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

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