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

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

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

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

27.07.2012, 11:29. Просмотров 1199. Ответов 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, чтобы не было ошибки и результат соответвовал ожидаемому (исходя из здравого смысла).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 11:29     Реализация классов
Посмотрите здесь:

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

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

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

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

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

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

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

Добавлено через 1 минуту
Цитата Сообщение от Beluga Посмотреть сообщение
Что нужно изменить в коде задания 3, чтобы не было ошибки и результат соответвовал ожидаемому (исходя из здравого смысла).
переопределить конструктор копирования и оператор присваивания
Beluga
1 / 1 / 0
Регистрация: 06.07.2012
Сообщений: 8
27.07.2012, 12:35  [ТС]     Реализация классов #4
Цитата Сообщение от David Sylva Посмотреть сообщение
Исходя из здравого смысла было бы неплохо написать условие задач и при написании сообщения форматировать его.
)) Понимаю. Но пишу ровно так, как описаны сами задачи
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 минут
*если, конечно, не учитывать "правило большой тройки"*
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2012, 12:52     Реализация классов
Еще ссылки по теме:

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

Реализация классов-контейнеров stack и list - C++
Помогите пожалуйста реализовать stack и list в виде кодов с файлами stack.h , stack.cpp и main.cpp и также с list. Буду очень благодарен.

Реализация алгоритма Хаффмана с использованием классов - C++
Всем привет. Пишу Алгоритм Хаффмана. Хочу сделать все красиво в классах,но как-то не додумываюсь. Пытался сделать чтение файла методом,но...

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

Книги по С++ для дельфиста (интересы: реализация классов, передача сообщений классам, RTTI, СOM) - C++
Приветствую! И так перейду к делу. Я дельфист. И тут возникла задача в реализации кросс-платформенной программы которая использует ffmeg...

Реализация иерархии классов на основе класса "Грузоперевозчик" - C++
Помогите, пожалуйста!!!!Четвёртый день сижу над этой задачей и ничего не получается. Создать базовый класс «Грузоперевозчик» и...


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

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

Добавлено через 45 секунд
Цитата Сообщение от nexen Посмотреть сообщение
*"правило большой тройки"*
ну вот сам все и нашел)
Yandex
Объявления
27.07.2012, 12:52     Реализация классов
Ответ Создать тему
Опции темы

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