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

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

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

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

19.05.2013, 21:43. Просмотров 328. Ответов 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;
}


В чем у меня ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 21:43     Наследование классов
Посмотрите здесь:

Наследование классов - C++
Добрый день. Есть код: #include &lt;iostream&gt; using namespace std; class A { public: A(int x, int y) { a=x;

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

Наследование классов - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; const int LEN=80; class kraina { private: ...

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

Наследование Классов - C++
class base { public: int t; base(){t=0;}; ~base(){}; }; class one:public base { public:

Наследование классов - C++
Как правильно построить наследование, чтобы класс C мог корректно использовать A : Show() ? Например имеем: AB.h: class A { ...

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

Цитата Сообщение от kukhtikov Посмотреть сообщение
kub D2(x), *d2;
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>
Вот библиотеки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2013, 22:50     Наследование классов
Еще ссылки по теме:

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

Наследование классов - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; class PARENT { public: void method1(){this-&gt;method2();}; void...

наследование классов - C++
Помогите пожалуйста разобраться с задачей Создайте базу данных деканата. В ней фиксируются данные о 2 категориях студентах: студенты...

Наследование классов - C++
Помогите, пожалуйста, разобраться - необходимо написать класс Administrator, кот наследуется (is derived) из класса SalariedEmployee: ...

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

Наследование классов - C++
Доброго времени суток! Стоит следующая учебная задача: есть 3 класса потомка (в моем случае типы авто: легковое, грузовое, автобус) с...


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

Или воспользуйтесь поиском по форуму:
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';
}


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

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