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

Действие конструктора вобще не понял - C++

Восстановить пароль Регистрация
 
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
11.09.2013, 13:35     Действие конструктора вобще не понял #1
Вобще не понял, зачем нужен конструктор.
Ведь написано Как же инициализировать переменные-члены класса? Для этого в классе используется специальная функция-член, называемая конструктором.

Я думал, конструктор нужен только потому, что в классе нельзя написать просто int initialAge=5 и как- либо работать с переменной.

Я теперь наоборот в легком шоке. Переменную, инициализированную в конструкторе, не видно! Так таки зачем он тогда нужен??

Если можно, приведите пару-тройку понятных примеров использования конструктора, пожалуста! Где он и каким бывает и что и как делает.

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
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 
   class Cat
        {
     public:
        
        Cat(int initialAge=5); 
        ~Cat();
        int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
        void SetAge (int age);
        void Meow();
        void Wydam()  {Bam();};   //статический метод
        int Bgsamm();
        void Metod(int);
      private:
        int itsAge; // статические переменные класса (Статическое поле)
        int B;
        
    //  Cat(){itsAge=0; B=8;};
        void Bam( ){cout << "Wydam\n";
                                  int BG=itsAge+ B;
                                  cout << BG;   } 
        
        };
                                          
 // конструктор класса Cat
  Cat::Cat(int initialAge)
   {
   itsAge = initialAge;
   cout << "Cat constructor\n";
   }
 
  Cat::~Cat() // деструктор, который не выполняет никаких действий
  {
  cout << "Cat destructor\n";
  }
 
 
 
 int Cat::Bgsamm() 
 {
  return (itsAge++); 
 }
 
 
 
 
 // определение функции SetAge как открытого
 // метода доступа к данным класса
 void Cat::SetAge(int age)
 {
    // присваиваем переменной-члену itsAge
    // значение переданного парйметра age
  itsAge = age;
 }
 
 
 
      // Определение метода Meow
      // возвращает void
      // параметров нет
      // используется для вывода на экран текста "Meow"
  void Cat::Meow()
  {
  cout << "Meow.\n";
  }
 
 
 
  Cat obyekt;
  void Cat::Metod (int tselaya=100) //обычный метод
  {tselaya=tselaya+initialAge; cout << tselaya;cout << "  целая\n";}      
 
 int main()
 {
     Cat Frisky; 
     Frisky.Meow();
    
     cout << obyekt.GetAge();
     obyekt.Bgsamm();
     obyekt.Wydam();
     obyekt. Bam();
     obyekt.Metod();
     system("pause");
    return 0;
 }

1>d:\проги\resheniecathapi8pi\cathapi8pi\cathapi8pi.cpp(79): error C2065: initialAge: необъявленный идентификатор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
12.09.2013, 10:20     Действие конструктора вобще не понял #21
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А у Объекта вообще деструктор вызовется только по завершению окна консоли.
а если локальный объект расположенный в main()? мне кажется что деструктор будет вызван где-то после return 0; и закрывающей скобкой

C++
1
2
3
4
5
6
7
int main()
{
    Cat Frisky; // Кот, живущий только в main-е
 
    return 0;
                // <-- где-то в этом месте должен быть вызван деструктор для Cat
}               // <-- а может быть и здесь
конечно, если объект глобальный, то он будет жить еще дольше, чем локальный
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
12.09.2013, 10:30     Действие конструктора вобще не понял #22
Цитата Сообщение от ___ Посмотреть сообщение
<-- а может быть и здесь
Для локального скорее всего здесь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2013, 14:45     Действие конструктора вобще не понял
Еще ссылки по теме:

C++ Правильно ли я понял условие ?
C++ Функция в обьекте-можно ли создать?Нужно ли?Что я вобще делаю?И как правильно?
объясните задачу, ничего не понял C++

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

Или воспользуйтесь поиском по форуму:
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
12.09.2013, 14:45  [ТС]     Действие конструктора вобще не понял #23
Спасибо!!!!!!! Ржу до слез. Спасибо за пример редактирования кода!!! Я сам его десять раз сдвигал- передвигал отступы, скобки вза- перед, но все равно получалось ужасно..

Добавлено через 1 час 25 минут
Все работает.
Yandex
Объявления
12.09.2013, 14:45     Действие конструктора вобще не понял
Ответ Создать тему
Опции темы

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