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

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

Восстановить пароль Регистрация
 
sllavko
0 / 0 / 0
Регистрация: 27.10.2010
Сообщений: 39
27.05.2011, 21:53     Наследование классов #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
#include <iostream>
#include <conio.h>
using namespace std;
const int LEN=80;
class kraina
{
      private:
              char name[LEN];
              unsigned long number;
              public:
                    void getdata()
                     {cout <<"\nVvedit Krainu: ";cin>>name;
                     cout <<"\nVvedit kilkist oblastej: ";cin>>number;}
                    void putdata()
                     {cout <<"\nKraina: "<<name;
                     cout <<"\nOblastej: "<<number;}
};
class stolycja:public kraina
{
      private:
          char name[LEN];
          unsigned long number;
              public:
                      void getdata()
                      {kraina::getdata();
                      cout <<"\nStolycja krainy: ";
                      cin>>name;
                      cout <<"\nNaselennya Krainy: ";
                      cin>>number;}
                      void putdata()
                      {kraina::putdata();
                      cout <<"\nStolycya krainy: "<<name;
                      cout <<"\nNaselennya krainy stanovyt'"<<number<<"tys.osib\n";}
};
int main()
{
   kraina k1, k2;
   k1.getdata();
   k2.putdata();
   stolycja s1, s2;
    s1.getdata();
    s2.putdata();
system("pause");
return 0;
}
кусок программы работает некоректно, я в программировании нуп подкажите что не так накарлякал, спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2011, 21:53     Наследование классов
Посмотрите здесь:

наследование классов C++
наследование классов C++
C++ Наследование классов
Наследование классов C++
C++ Наследование классов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
27.05.2011, 22:19     Наследование классов #2
Цитата Сообщение от sllavko Посмотреть сообщение
кусок программы работает некоректно, я в программировании нуп подкажите что не так накарлякал, спасибо.
А какая у вас конкретно задача?

Вы попробуйте написать конструкторы. У базового и наследника.
sllavko
0 / 0 / 0
Регистрация: 27.10.2010
Сообщений: 39
27.05.2011, 22:32  [ТС]     Наследование классов #3
Цитата Сообщение от adico Посмотреть сообщение
А какая у вас конкретно задача?

Вы попробуйте написать конструкторы. У базового и наследника.
нуна создать классы а,б,с..., взять из основного класса А методы, и дополнить в классах а,б,с... свои методы


ну меня конечно выполнение поражает, если народ я там что-то сильно лол намутил не смейтесь... сессия .. голова уже ничерта не варит.
Миниатюры
Наследование классов  
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
27.05.2011, 22:57     Наследование классов #4
а в чем сама некорректность? что вам не нравится?
И допишите конструкторы тогда может быть все станет понятно.

Добавлено через 14 минут
Суть в том, для корректной работы вам нужно, описать все конструкторы предка и наследника. Так как если в наследнике не описан конструктор он вызывает конструктор предка. Проблему с пачкой решеток можно исправить например с помошью <string>, потому что вы выводите строку константной длины 80 и ее неинтилизированая часть появляется на экране....

Добавлено через 1 минуту
И используйте оператор this-> иногда он может предотвратить некорые ошибки.
sllavko
0 / 0 / 0
Регистрация: 27.10.2010
Сообщений: 39
28.05.2011, 14:44  [ТС]     Наследование классов #5
Цитата Сообщение от adico Посмотреть сообщение
а в чем сама некорректность? что вам не нравится?
И допишите конструкторы тогда может быть все станет понятно.

Добавлено через 14 минут
Суть в том, для корректной работы вам нужно, описать все конструкторы предка и наследника. Так как если в наследнике не описан конструктор он вызывает конструктор предка. Проблему с пачкой решеток можно исправить например с помошью <string>, потому что вы выводите строку константной длины 80 и ее неинтилизированая часть появляется на экране....

Добавлено через 1 минуту
И используйте оператор this-> иногда он может предотвратить некорые ошибки.
пробывал писать что-то не получается... ошибок кучу компилятор выдает (
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
#include <iostream>
//#include <conio.h>
using namespace std;
class kraina
{
      private:
              string name;
              unsigned long number;
              public:
                  kraina():name(string),number(unsigned long)
                  {cout <<"\nVvedit Krainu: "; cin >> name;
                  cout <<"\nVvedit kilkist oblastej: "; cin >> number;}
        
                  
                  /*  void getdata()
                     {cout <<"\nVvedit Krainu: ";cin>>name;
                     cout <<"\nVvedit kilkist oblastej: ";cin>>number;} */
                     void putdata()
                     {cout <<"\nKraina: "<<name;
                     cout <<"\nOblastej: "<<number;} 
};
class stolycja:public kraina
{
      private:
          string name;
          unsigned long number;
              public:
                  stolycja()::kraina();
                  stolycja():name(string),number(unsigned long)
                  {cout <<"\nVvedit Krainu: "; cin >> name;
                  cout <<"\nVvedit kilkist oblastej: "; cin >> number;}
                    /* void getdata()
                      {kraina::getdata();
                      cout <<"\nStolycja krainy: ";
                      cin>>name;
                      cout <<"\nNaselennya Krainy: ";
                      cin>>number;} */
                      void putdata()
                      {kraina::putdata();
                      cout <<"\nStolycya krainy: "<<name;
                      cout <<"\nNaselennya krainy stanovyt'"<<number<<"tys.osib\n";} 
};
int main()
{
    kraina k()
        k.putdata() ;
        //k2.number;
        stolycja s()
        s.putdata();
        //s2.number;
  /* kraina k1, k2;
   k1.getdata();
   k2.putdata();
   stolycja s1, s2;
    s1.getdata();
    s2.putdata(); */
system("pause");
}
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
28.05.2011, 15:25     Наследование классов #6
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
#include "stdafx.h"
#include <iostream>
using namespace std;
class kraina{
      protected:
              string name;
              unsigned long number;
      public:
            kraina():name(NULL),number(NULL){}//конструктор по умолчанию
            kraina(string str,unsigned long lon):name(str),number(lon){}//конструктор с параметрами
            void getdata(){
                cout <<"Vvedit Krainu:"<<endl;
                char qwe[123];
                cin >> qwe;
                this->name.assign(qwe);
                cout <<"Vvedit kilkist oblastej:"<<endl;
                cin >> this->number;
            }
            void putdata(){
                cout<<"Kraina:"<<this->name.c_str()<<endl;
                cout<<"Oblastej:"<<this->number<<endl;
            } 
};
 
class stolycja:public kraina{
      private:
                 int temp;//это поля наследников
      public:
            stolycja():kraina(){};//по умолчанию с вызовом конструктора предка
            stolycja(string str,unsigned long lon,int temp):kraina(str,lon),temp(temp){}
            void getdata(){
                cout <<"Vvedit temp:"<<endl;
                cin >> this->temp;
            }
            void putdata(){
                cout<<"Kraina:"<<this->name.c_str()<<endl;
                cout<<"Oblastej:"<<this->number<<endl;
                cout<<"temp:"<<this->temp<<endl;
            } 
};
int main()
{
    setlocale(LC_ALL, "Rus");
        kraina k1(), k2("Вася",12);
        stolycja s1(),s2("Петя",40,2);
        k2.putdata();
        s2.putdata();
system("pause");
}
Добавлено через 8 минут
А кстати класс С наследником от А должен быть или от B? Если от В, то там будут проблемы с типом полей. 4 месяца ООП закончил и ничего не помню уже.

Добавлено через 7 минут
Все вспомнил, в базовых нужно написать доп. методы получения значений защишеных полей.
sllavko
0 / 0 / 0
Регистрация: 27.10.2010
Сообщений: 39
28.05.2011, 17:06  [ТС]     Наследование классов #7
программа не работает почему-то, не запрашивает ввода даных (
Миниатюры
Наследование классов  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2011, 17:09     Наследование классов
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
adico
13 / 13 / 1
Регистрация: 24.02.2011
Сообщений: 64
28.05.2011, 17:09     Наследование классов #8
ах да... в наследнике в методе getdata(), допишите интилизацию базовых параметров.
потом в main так и вызывайте s1.getdata();
Yandex
Объявления
28.05.2011, 17:09     Наследование классов
Ответ Создать тему
Опции темы

Текущее время: 23:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru