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

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

Войти
Регистрация
Восстановить пароль
 
azaron
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
#1

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

02.04.2011, 12:57. Просмотров 490. Ответов 3
Метки нет (Все метки)

Задача :
Базовый класс:
class Shape2D
{
public:
Shape2D();
virtual ~ Shape2D();
virtual float Area( )= 0;
virtual float Perimeter() = 0;
virtual void PrintMessage();
};
Shape2D() – конструктор Базового класса.
~ Shape2D() – деструктор базового класса.
Area() – возвращает значение площади фигуры.
Perimeter() – возвращает значение периметру фигуры.
PrintMessage() – выводит сообщение о типе фигуры.

Производные классы Triangle и Rectangle
Определить необходимые для производных классов параметры и переопределить необходимые функции.

вот что я написал:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//shape.h
#include <math.h>
#include <iostream>
using namespace std;
 
class Shape2D  
{   
public:
    Shape2D()
    {}
    virtual ~ Shape2D()
    {}
    virtual float Area()=0;
    virtual float Perimeter()=0;
    virtual void PrintMessage();
};
 
class Triangle : public Shape2D
{
public:
    Triangle(const Triangle& trngl);
    float Triangle::Area (float a=3, float b=4, float c=5);
    float Triangle::Perimeter(float a=3, float b=4, float c=5);
    virtual void Triangle::PrintMessage();
    virtual ~ Triangle () {}
};
 
class Rectangle : public Shape2D
{
public :
    Rectangle(const Rectangle& rct);
    float   Rectangle::Area( float a=4, float b=5);
    float Rectangle::Perimetr( float a=4, float b=5);
    virtual void Rectangle::PrintMessage();  
  virtual~Rectangle() {}
};
 
//shape.cpp
 
#include "Shape.h"
Triangle::Triangle(const Triangle& trngl)
{
        *this = trngl ;
}
float Triangle::Area ( float a, float b, float c)
    {
        float p=(a+b+c)/2;
        float S=sqrt(p*(p-a)*(p-b)*(p-c));
        return S;
    }
    float Triangle::Perimeter(float a, float b, float c)
    {
        float P=a+b+c;
        return P;
    }
     void Triangle::PrintMessage()
    {
        cout<<"Triangle \n"<<"Area:\n"<<&Triangle::Area<<endl<<"Perimetr:\n"<<&Triangle::Perimeter<<endl;
    }
 
 
 
     Rectangle::Rectangle(const Rectangle& rct)
{
    *this = rct ;
}
     float  Rectangle::Area(float a,float b)
  {
        float S=a*b;
        return S;
  }
  float Rectangle::Perimetr( float a, float b)
  {
      float P=2*(a+b);
      return P;
  }
   void Rectangle::PrintMessage()
  {
 cout<<"Rectangle\n"<<"Area:\n"<<&Rectangle::Area<<endl<<"Perimetr:\n"<<&Rectangle::Perimetr<<endl;
  }
 
//main.cpp
 
#include <iostream>
#include <math.h>
#include <conio.h>
#include "Shape.h"
using namespace std;
 
int main ()
{
    Triangle trngl1(4,5,6);
    Triangle.Area();
}
я понимаю что проблема в меин файле, но не знаю, как описать визов абстрактного класса. но может проблема глубже, я не могу разобраться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2011, 12:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос наследование (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++
Пытаюсь разобраться в наследовании Есть класс class File { public: struct comp { char num; // Имя переменной char st;...

наследование - C++
Помогите разобраться в программе. Почему возникают такие ошибки cylindr.cpp expected `,' or `...' before '&amp;' token cylindr.cpp `c'...

Наследование - C++
Написал код, но есть небольшая ошибка. Мне нужно, чтобы с клавиатуры вводилось имя (например James) и он сразу выводил по нему всю...

Наследование - C++
int main() { setlocale(LC_ALL, &quot;RUS&quot;); Stud FIRST_TRY; FIRST_TRY.set(); exam(FIRST_TRY); FIRST_TRY.get(); ...

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

3
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 13:31 #2
Цитата Сообщение от azaron Посмотреть сообщение
Triangle trngl1(4,5,6);
Что это такое?
0
azaron
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 14
02.04.2011, 14:05  [ТС] #3
пробивал так визвать функцию с заданими параметрами
0
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
02.04.2011, 20:12 #4
Цитата Сообщение от azaron Посмотреть сообщение
пробивал так визвать функцию с заданими параметрами
Сначала напишите его(конструктор) в класах.
0
02.04.2011, 20:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 20:12
Привет! Вот еще темы с ответами:

Наследование?! - C++
привет всем. Есть класс Circle c1, c2, c3 Нужно реализовать через наследование класс множество, прошу помочь как он будет выглядеть...

Наследование в C++ - C++
Прошу помощи, ибо С++ не моё, а лабораторные работы девушке сдавать надо: Создать 1 базовый класс и несколько производных. Все...

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

Наследование - C++
Добрый день. Мне нужно реализовать такую структуру классов: есть класс 1, от него наследуются три класса: 2.1, 2.2, 2.3. От этих трех...


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

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

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