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

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

Войти
Регистрация
Восстановить пароль
 
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
#1

Cтатическая переменная - C++

09.07.2011, 08:11. Просмотров 510. Ответов 7
Метки нет (Все метки)

Подскажите пожалуйста почему в данном примере статическая переменная

C++
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
#include<iostream>
using namespace std;
class a
{private:
 int b;
 static int c;
public:
a()
{c++;}
    a (int b1):b(b1)
    {}
    void fc()
   { cout<<"Мой порядковый номер - "<<b<<endl;
    cout<<"Всего объектов - "<<c<<endl<<endl;}
};
int a ::c=0;
int main ()
{setlocale(LC_ALL,"Rus");
a a1(1),a2(2),a3(3);
a1.fc();
a2.fc();
a3.fc();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2011, 08:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cтатическая переменная (C++):

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз - C++
Исходники: /* main.cpp */ #include &quot;hider.h&quot; int main(void) { return 0; } /* foo.cpp */

Переменная или переменная и условие - C++
Привет всем. Стало интересно. Есть предположим функция. В ней ссылкой передается аргумент Status; Как лучше сделать? ...

Cтатическая линковка или "дайте _imp__func, а не __imp_func" - C++
написал DLL, собираю всё в MinGW Code::Blocks на выходе получаю файл func.a, func.def и func.dll внутри func.a три раза упоминается...

переменная - C++
#include &lt;iostream&gt; using namespace std; void func1(); void func2(); int count; // Это голобальная переменная int main()...

Переменная - C++
Мне нужная переменная(ые) в 1 байт. Где её можно взять?

Булевская переменная - C++
Написать программу, в результате выполнения которой булевская переменная t получает значение true, если выполняется указанное условие, и...

7
Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 352
09.07.2011, 09:36 #2
Всё там должно работать - просто для изменения переменной "c" вам необходимо вызывать конструктор без параметров

C++
1
a a1, a2, a3;
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
09.07.2011, 09:59  [ТС] #3
Не могли бы вы это в коде показать? я вызываю, но ошибок еще больше становится.
0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
09.07.2011, 10:04 #4
parkito,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
class A
{
public:
   static int a;
   A() { a++; }
};
 
int A::a;
 
int main()
{
   A a1, a2, a3;
   
   std::cout << A::a << std::endl; // выведет 3;
 
   return 0;
}
0
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
09.07.2011, 10:42  [ТС] #5
Цитата Сообщение от nameless Посмотреть сообщение
parkito,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
class A
{
public:
   static int a;
   A() { a++; }
};
 
int A::a;
 
int main()
{
   A a1, a2, a3;
   
   std::cout << A::a << std::endl; // выведет 3;
 
   return 0;
}
Я имею понятие как выводить статическое значение. Мне не понятно почему в моем случае эта переменная не работает. Не могли бы вы интегрировать исправления в мой код?
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.07.2011, 10:49 #6
Замените 11 строку в вашем коде на
C++
1
{c++;}
1
parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 692
09.07.2011, 20:53  [ТС] #7
Цитата Сообщение от Net_Wanderer Посмотреть сообщение
Замените 11 строку в вашем коде на
C++
1
{c++;}

Спасибо. А не подскажите почему мой вариант не был трудоспособным ??
0
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.07.2011, 21:20 #8
Цитата Сообщение от parkito Посмотреть сообщение
Спасибо. А не подскажите почему мой вариант не был трудоспособным ??
У вас есть два конструктора, и только в дефолтном есть cnt++;
когда вы пишете
C++
1
a1(1)
то вызывается конструктор с параметром(т. е. не дефолтный), в котором инкримента cnt нет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2011, 21:20
Привет! Вот еще темы с ответами:

Булевская переменная - C++
Написать программу, в результате выполнения которой булевская переменная t получает значение true, если выполняется указанное условие, и...

Локальная переменная - C++
Если в функции объявляется символ,например так: char f(void){ char ch; ch = getchar(); return ch; }

Не инициализируется переменная - C++
Проблема в том, что строка номер 18 полностью игнорируется, почему - вообще не понимаю. Значение i остается абракадаброй или нулем, если...

Неинициализированная переменная - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; double func_x() { double x; cout &lt;&lt; &quot;Введите x = &quot;; cin &gt;&gt;...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
09.07.2011, 21:20
Ответ Создать тему
Опции темы

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