Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
16 / 16 / 2
Регистрация: 26.04.2012
Сообщений: 1,091

Перегруженный конструктоор- так пойдет?

04.09.2013, 23:15. Показов 1769. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не пойдет и как бывает?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 class Cat
        {
     public:
        Cat(int initialAge=5); 
        ~Cat();
        int GetAge() const; // метод доступа const
        void SetAge (int age);
        void Meow();
      private:
        int itsAge;
        int B;
        Cat( ){itsAge=0; B=8;} 
        ~Cat();
        };
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2013, 23:15
Ответы с готовыми решениями:

Перегруженный оператор
MathClass = Harry; Раньше я думал, что перегрузка - это предоставление оператору функций, которых, он изначально не имел. Что...

Перегруженный operator=
Изучаю перегрузку, возник вопрос. Есть класс: class chk { private: int id; int data; public: chk(); chk(int _data);

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

24
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
05.09.2013, 23:51
Студворк — интернет-сервис помощи студентам
Если поле данных класса описано с ключевым словом static, то значение этого поля будет одинаковым для всех объектов данного класса. Статические данные класса полезны в тех случаях, когда необходимо, чтобы все объекты включали в себя какое-либо одинаковое значение. Статическое поле по своим характеристикам схоже со статической переменной: оно видимо только внутри класса, но время его жизни совпадает со временем жизни программы. Таким образом, статическое поле существует даже в том случае, когда не существует ни одного объекта класса. Тем не менее, в отличие от статической переменной функции, предназначенной для сохранения значения между вызовами, статическая переменная класса используется для хранения данных, совместно используемых объектами класса.
Для того чтобы понять, зачем могут использоваться статические переменные класса, представьте себе следующую ситуацию. Допустим, вам необходимо, что-бы объект вашего класса располагал информацией, сколько еще объектов этого же класса существует на данный момент в памяти.

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
#include <iostream>
using namespace std;
 
class foo
{
private:
    static int count;   //общее поля для всех объектов 
                        //(в смысле объявления)
public:
    foo()               //инкрементирование при создании объекта
    {count++;}
 
    int getcount()      //возвращает значение count
    {return count;}
};
 
int foo::count = 0;     //определение count
 
int main()
{setlocale (LC_ALL,"");
    foo f1, f2, f3;     //создание трех объектов
    //каждый объект видит одно и тоже значение
    cout << "Число объектов: "<< f1.getcount() << endl;
    cout << "Число объектов: "<< f2.getcount() << endl;
    cout << "Число объектов: "<< f3.getcount() << endl;
}
В этом примере класс foo содержит единственное поле count, имеющее тип static int. Конструктор класса инкрементирует значение поля count. В функции main() мы определяем три объекта класса foo. Поскольку конструктор в этом случае вызывается трижды, инкрементирование поля count также происходит трижды. Метод getcount() возвращает значение count.

Если бы мы использовали не статическое, а автоматическое поле count, то конструктор увеличивал бы на единицу значение этого поля для каждого объекта. Т.е результат бы выглядел "1 1 1" а не "3 3 3"

Может все же стоит это почитать? Очень понятно все расписано )
1
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
05.09.2013, 23:56
Цитата Сообщение от reisal78 Посмотреть сообщение
Если бы мы использовали не статическое, а автоматическое поле count,
то у нас бы не скомпилировалось вот это
Цитата Сообщение от reisal78 Посмотреть сообщение
int foo::count = 0;
2
16 / 16 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
06.09.2013, 00:15  [ТС]
А вот, ошибка. Посмотрите пожалуста, какие правила я нарушил.

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
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
   class Cat
        {
     public:
        Cat(int initialAge=5); 
        ~Cat();
        int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
        void SetAge (int age);
        void Meow();
        void Wydam()  {Bam();};   
      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() const
 {
  return (itsAge++);
cpp(37): error C2039: Bgsamm: не является членом "Cat"

Добавлено через 1 минуту
О, Спасибо!!!!!
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
06.09.2013, 00:21
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
int Cat::Bgsamm() const
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Bgsamm: не является членом "Cat"
найди в описании своего класса такую функцию
1
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
06.09.2013, 08:34
Цитата Сообщение от ValeryS Посмотреть сообщение
то у нас бы не скомпилировалось вот это
Согласен, не заметил =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2013, 08:34

перегруженный конструктор
можно пример перегруженного конструктора ?)

C++ перегруженный метод
Создайте класс с закрытыми членами и перегруженными методами inc (), которые увеличивают аргумент на единицу и возвращают числа типа...

перегруженный оператор <<
подскажите как перегрузить оператор &lt;&lt; для класса как описать само перегружение friend ostream&amp; operator &lt;&lt; (ostream &amp;c,...

Перегруженный оператор +
Товарищи программисты не могу понять вот этот кусок кода: dist4 = dist1 + dist2 + dist3; у нас есть конструктор с двумя параметрами, но...

перегруженный синус
#include &lt;iostream&gt; #include &lt;cmath&gt; #define PI 3.14159265; using namespace std; int main(){ double a,b,x,y,e; e=2.71; ...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru