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

Создать класс Человек, имеющий имя, возраст - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
30.05.2013, 19:29     Создать класс Человек, имеющий имя, возраст #1
Здравствуйте! Не могли бы Вы помочь мне сделать вот эту задачу:

Создать класс Человек, имеющий имя, возраст. Определить конструкторы, деструктор и функцию печати. Создать public-производный класс - Совершеннолетний, имеющий номер паспорта. Определить конструкторы по умолчанию и с параметрами, деструктор, фуекцию печати. Определить функцию переназначения номера паспорта.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amadey18
 Аватар для amadey18
91 / 91 / 32
Регистрация: 29.04.2013
Сообщений: 361
30.05.2013, 20:40     Создать класс Человек, имеющий имя, возраст #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
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
#include<iostream>
using namespace std;
 
class Human
{
public:
    Human();
    Human(char* name, int age){itsName=name; itsAge=age;}
    ~Human(){};
    void SetName(char* name);
    void SetAge(int age);
    int GetName()const{return *itsName;}
    int GetAge()const{return itsAge;}
    void Display()const;
private:
    char* itsName;
    int itsAge;
};
//ивиняюсь за название класса
//Sov - Sovershennoletniy
class Sov: public Human
{
public:
    Sov();
    Sov(long number);
    ~Sov(){};
    int GetNumber()const{return itsNumber;}
    void SetNumber(long number){itsNumber=number;}
    void Display_number()const;
private:
    long itsNumber;
};
 
Human::Human()
{
    itsName = "Maxim";
    itsAge = 21;
}
 
void Human::SetName(char* name)
{
    itsName = name;
}
 
void Human::SetAge(int age)
{
    itsAge = age;
}
 
void Human::Display() const
{
    cout << "Name: " << itsName << "\n";
    cout << "Age: " << itsAge << "\n";
}
 
Sov::Sov()
{
    itsNumber = 123456;
}
 
Sov::Sov(long number)
{
    itsNumber = number;
}
 
void Sov::Display_number() const
{
    Human::Display();
    cout << "Nomer pasporta: " << itsNumber << "\n";
}
 
int main()
{
    char name[10];
    int age;
    long pasport;
    Sov people;
    cout << "Enter the name: ";
    cin >> name;
    cout << "enter age: ";
    cin >> age;
    cout << "nomer pasporta: ";
    cin >> pasport;
    people.SetName(name);
    people.SetAge(age);
    people.SetNumber(pasport);
    people.Display_number();
    return 0;
}
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
30.05.2013, 23:22     Создать класс Человек, имеющий имя, возраст #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <cstring>
 
class Human {
 public:
  Human() : name(0), age(0) {}
  Human(const char *name, int age) : name(0), age(age) {
    setName(name);
  }
  Human(const Human &other) : name(0), age(other.getAge()) {
    setName(other.getName());
  }
  Human &operator=(const Human &other) {
    if (this != &other) {
      setName(other.getName());
      setAge(other.getAge());
    }
    return *this;
  }
  virtual ~Human() {
    delete [] name;
  }
  void setName(const char *name) {
    delete [] this->name;
    this->name = strcpy(new char[strlen(name) + 1], name);
  }
  const char *getName() const { return name; }
  int getAge() const { return age; }
  void setAge(int age) { this->age = age; }
 private:
  char *name;
  int age;
};
 
class Adult : public Human {
 public:
  Adult() : Human(), passport(0) {}
  Adult(const char *name, int age, const char *passport) : Human(name, age),
    passport(0) {
    setPassport(passport);
  }
  Adult(const Adult &adult) : Human(adult), passport(0) {
    setPassport(adult.getPassport());
  }
  Adult &operator=(const Adult &adult) {
    if (this != &adult) {
      Human::operator=(adult);
      setPassport(adult.getPassport());
    }
    return *this;
  }
  virtual ~Adult() {
    delete [] passport;
  }
  void setPassport(const char *passport) {
    delete [] this->passport;
    this->passport = strcpy(new char[strlen(passport) + 1], passport);
  }
  const char *getPassport() const { return passport; }
 private:
  char *passport;
};
 
std::ostream &operator<<(std::ostream &stream, const Human &human) {
  return stream << "Human{" <<
    "name='" << human.getName() << "', " <<
    "age=" << human.getAge() << "}";
}
 
std::ostream &operator<<(std::ostream &stream, const Adult &adult) {
  return stream << "Adult{" <<
    "name='" << adult.getName() << "', " <<
    "age=" << adult.getAge() << ", " <<
    "passport='" << adult.getPassport() << "'}";
}
 
int main(int, char**) {
  Adult a("Petr", 18, "12345");
  std::cout << a << std::endl;
  Adult b;
  a.setPassport("asdfg");
  b = a;
  std::cout << b << std::endl;
 
  Human c(a);
  std::cout << c << std::endl;
 
  return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от amadey18 Посмотреть сообщение
Извиняюсь если что неправильно, я еще новичок)
Надеюсь все правильно.
Поля-строки лучше копировать в класс, а не просто указатель назначать. Иначе поменяете значение исходной строки -- и привет.
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
31.05.2013, 00:02  [ТС]     Создать класс Человек, имеющий имя, возраст #4
А не можете переделать этот код под Qt Creator?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
31.05.2013, 07:55     Создать класс Человек, имеющий имя, возраст #5
Цитата Сообщение от SvI Посмотреть сообщение
А не можете переделать этот код под Qt Creator?
QT Creator это такая IDE. Компилятор там -- GCC. Вышеприведенный код компилируется в GCC.
amadey18
 Аватар для amadey18
91 / 91 / 32
Регистрация: 29.04.2013
Сообщений: 361
31.05.2013, 09:04     Создать класс Человек, имеющий имя, возраст #6
Цитата Сообщение от lemegeton Посмотреть сообщение

Добавлено через 1 минуту

Поля-строки лучше копировать в класс, а не просто указатель назначать. Иначе поменяете значение исходной строки -- и привет.
О, спасибо, разобрался.
Yandex
Объявления
31.05.2013, 09:04     Создать класс Человек, имеющий имя, возраст
Ответ Создать тему
Опции темы

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