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

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

Войти
Регистрация
Восстановить пароль
 
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
#1

Наследование классов - C++

19.05.2013, 21:43. Просмотров 336. Ответов 3
Метки нет (Все метки)

Задание:
Кликните здесь для просмотра всего текста

Создать класс базовый класс «квадрат».
Элементы класса (поля имеют статус доступа protected):
поле, задающее длину стороны;
конструктор для инициализации поля;
метод для вычисления площади квадрата и ее печати.
Создать производный класс «куб».
Элементы класса:
конструктор для инициализации поля;
переопределенный метод для вычисления объема куба (вместо площади) и его печати.
Создать по 1 объекту каждого из классов. Объявить переменную - указатель, имеющею тип базового класса, вначале настроить ее на объект базового класса, вызвать метод базового класса через указатель на объект. Затем настроить ее на объект производного класса, вызвать метод производного класса через указатель на объект.



Код:
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
 
class kvadrat
{
protected:
    double dlina;
public:
    kvadrat()
    {
        this->dlina=0;
    }
    kvadrat(double d)
    {
        this->dlina=d;
    }
    double square()
    {
        return dlina*dlina;
    }
    void print()
    {
        cout << "Площадь квадрата S=" << square() << endl;
        return;
    }
};
 
class kub : public kvadrat
{
public:
    kub():kvadrat()
    {
        this->dlina=0;
    }
    double squar()
    {
        return dlina*dlina*dlina;
    }
    void printf()
    {
        cout << "Объем куба V=" << squar() << endl;
        return;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    double x;
    cout << "Введите значение длины: ";
    cin >> x;
    cin.sync();
    kvadrat D1(x), *d1;
    d1=&D1;
    d1->print();
    cout << endl << endl;
    kub D2(x), *d2;
    d1=&D2;
    d1->print();
    d2=&D2;
    d2->printf();
    getch();
    return 0;
}


В чем у меня ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование классов (C++):

Заменить наследование классов на наследование интерфейсов - C++
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

Наследование классов - C++
Доброго времени суток. Обращаюсь за помощью к Вам. Язык С++ стал изучать недавно и столкнулся вот с такой проблемой: Рассмотрим класс...

Наследование классов - C++
Доброго времени Вам. я с толкнулся с неприятной проблемой делая лабораторную работу по ООП, а именно запутался(а если честно то и...

Наследование классов - C++
Здравствуйте, извините за глупый вопрос, но у меня проблема в следующем: Имеется базовый класс class TestFirst{ public: int...

наследование классов - C++
Работаю в с++ билдер.. программа вылетает при запуске.. после того, как сделал наследование.. В чем проблема? Как решить? Вот код: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
19.05.2013, 21:49 #2
не подключены библиотеки для стримов и локали.
здесь для D2 вызывается несуществующий конструктор

Цитата Сообщение от kukhtikov Посмотреть сообщение
kub D2(x), *d2;
0
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
19.05.2013, 22:08  [ТС] #3
metaluga145,
C++
1
2
3
4
5
6
7
#include <stdio.h>
#include <tchar.h>
#include <iostream>
using namespace std;
#include <Windows.h>
#include <locale.h>
#include <conio.h>
Вот библиотеки
0
Vacsus
1 / 1 / 1
Регистрация: 28.04.2013
Сообщений: 8
19.05.2013, 22:50 #4
У меня сегодня хорошее настроение, поэтому я написал этот код за тебя.
Кликните здесь для просмотра всего текста

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
#include <iostream>
 
class Square
{
protected:
    double length;
public:
    Square(double _length = 0);
    virtual double Calculate() const;
    virtual void Show() const;
};
 
class Cube: public Square
{
public:
    Cube(double _length = 0);
    double Calculate() const;
    void Show() const;
    
};
 
int main()
{
    Square s(5);
    Cube c(5);
    
    Square* ptr = &s;
    ptr->Show();
    ptr = &c;
    ptr->Show();
    
    system("pause");
    return 0;
}
 
Square::Square(double _length): length(_length)
{}
double Square::Calculate() const
{
    return length*length;
}
void Square::Show() const
{
    std::cout << "S = " << Calculate() << '\n';
}
 
 
Cube::Cube(double _length): Square(_length)
{}
double Cube::Calculate() const
{
    return length*length*length;
}
void Cube::Show() const
{
    std::cout << "V = " << Calculate() << '\n';
}


И таки да, ты не выполнил основное задание - не использовал виртуальные функции, а в этом был весь смысл.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 22:50
Привет! Вот еще темы с ответами:

Наследование классов - C++
Здравствуйте! Вот написан мой код ниже. Я когда пытаюсь ввести &quot;What give animal:&quot; идёт прекращение работы. Не понимаю почему. Помогите...

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

Наследование классов - C++
я решил по примеру одной задачи свою, но там много ошибок, может ктото сможет поправить их. Наследование. ...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.05.2013, 22:50
Ответ Создать тему
Опции темы

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