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

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

Войти
Регистрация
Восстановить пароль
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
#1

Хитрое создание переменной - C++

19.10.2013, 19:30. Просмотров 302. Ответов 4
Метки нет (Все метки)

Позвольте азадачить всех, кому интересно.

Создаю переменные int konstruktor; int destruktor; не представляю, как их инициализировать нолями. По-замыслу, я хочу их ++konstruktor; и ++destruktor; в конструкторе и деструкторе соответственно. Соотвецтвено, я их не могу инициализировать в конструкторе и деструкторе. Инициализировал в функции, которую специально написал как мог- получается фигня.Первое, так первый же вызов конструктора остается нещитаным, во-вторых както воще рогато, некрасиво ужас, и еще и неполучается- смотрите, цифры выводятся нереальные. К стати, что же не так, я не понял.
пробовал int konstruktor; int destruktor; прописать просто же в майне, так его прикиньте в конструкторе не видно.
В общем я уже из мозгов выпал. А еще прикиньте, эти переменные можно вычесть одна из другой!
Так можно же ли сделать что-то подобное?

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
// Листинг 9.14.
 // Разрешение проблемы утечки памяти
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл смело и не раздумывая  вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 
 class SimpleCat
 {
public:
SimpleCat (int age, int weight);
~SimpleCat();
int GetAge() { return itsAge; }
int GetWeight() { return itsWeight; }
void  KonstructFunction();
private:
int itsAge;
int itsWeight;
int  konstruktor;  int  destruktor;
 };
 
 SimpleCat::SimpleCat(int age, int weight)
 {
itsAge = age;
itsWeight = weight;++konstruktor;
cout << "Konstruktor:  " << "   itsAge " << itsAge <<"    itsWeight " <<  itsWeight << "     konstruktor " <<  konstruktor << endl;
 }
 
SimpleCat::~SimpleCat()
 {
++destruktor;
cout << "Simple Cat Destructor...    "    << "     destruktor " <<  destruktor <<endl ;
 }
 
 SimpleCat & TheFunction(); 
 
 SimpleCat* TheFunction_MrGluck() ;
 
void SimpleCat::KonstructFunction()
 {  konstruktor=0;   destruktor=0;  cout << "KonstructFunction()...    "    << "     konstruktor " <<  konstruktor<< "     destruktor " <<  destruktor <<endl ; } 
 
 
 
 int main()
 {
SimpleCat Murtsic(5,6);
Murtsic.KonstructFunction();
SimpleCat Barsic(6,7);
SimpleCat & rCat = TheFunction();// Объявляем сылку rCat на то, что выдает TheFunction()  
int age = rCat.GetAge();
cout << "rCat " << age << " years old!\n";
cout << "&rCat: " << &rCat << endl;
SimpleCat * pCat = &rCat;
delete pCat;
system("pause  ");
 SimpleCat* rCat_MrGluck = TheFunction_MrGluck();
 cout << "rCat_MrGluck: " << rCat_MrGluck << endl;
    delete rCat_MrGluck;
system("pause  ");return 0;
 }
 
 SimpleCat &TheFunction()  //функция возвращяет ссылку на SimpleCat.
 {
SimpleCat * pFrisky = new SimpleCat(5,9);//Если оператор new может успешно выделить требуемый объем памяти, он возвращает указатель на начало области выделенной памяти.
//указатель на SimpleCat и одновременно засылка данных в конструктор
cout << "pFrisky: " << pFrisky << endl;
return *pFrisky; // разименовываем указатель на SimpleCat
 }
 
 
SimpleCat* TheFunction_MrGluck() 
{
    SimpleCat * pFrisky_MrGluck = new SimpleCat(15,9);
    cout << "pFrisky_MrGluck: " << pFrisky_MrGluck << endl;
    return pFrisky_MrGluck; // не разыменовываем указатель на SimpleCat
 }
Миниатюры
Хитрое создание переменной  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2013, 19:30     Хитрое создание переменной
Посмотрите здесь:

Хитрое транспонирование матрицы - C++
Значится так, есть матрица загнанная в вектор... есть ли способ транспонировать ее не создавая новый вектор, то есть просто обменивая...

Хитрое разделение массивов. - C++
Из элементов массива А получить массивы В и С следующим образом. Выбрать в массиве А два наиболее близких по значению элемента; меньший из...

Хитрое разложение. Дополнить - C++
В общем решал олимпиадную задачу( пробную ). Вот текст: Вот что я написал: #include &lt;iostream&gt; using namespace std; int...

Как сделать хитрое наследование? Хранить в одном контейнере родителя и потомков - C++
Доброго времени суток! Интересует, можно ли при создании класса-потомка назначать его родительский класс (не копировать, а именно...

Создание файлов с переменной в названии - C++
string adrec = &quot;C:\\form\\&quot;+name+&quot;_&quot;+surname+&quot;.txt&quot;; ofstream file(adrec) ; как реализовать нормально эту мысль? name, surname...

Компилятор/создание переменной программно - C++
Сложно ли написать свой компилятор к (например) своему придуманному языку? Где можно об этом почитать? Меня интересует именно это: Как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2013, 19:32     Хитрое создание переменной #2
либо делать их глобальными и выносить из класса, либо статическими и оставлять в классе
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
19.10.2013, 19:35  [ТС]     Хитрое создание переменной #3
Спасибо!!!!!!!!! Пожалуста черкните одной строкой, как это правильно обьявить.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
19.10.2013, 19:37     Хитрое создание переменной #4
с глобальными переменными, думаю, все понятно
со статическими так
C++
1
2
3
4
5
class class_name
{
   static int value;
};
int class_name::value = 0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2013, 19:57     Хитрое создание переменной
Еще ссылки по теме:

Создание файла с именем, которое указано в переменной - C++
Здравствуйте! Возможно ли создать файл с именем, которое указано в переменой например nazv Если да, покажите пример

Структуры. Создание переменной int внутри функции. Ошибка - C++
Первый раз работаю со структурами. Компилятор жалуется на 13 строку со словами &quot;new types may not be defined in a return type two or...

Создание переменной типа "чар" из последовательности бит - C++
1. Получаю 8 чисел типа int '0' или '1'.То есть, например, 00101010 2. Как получить переменную типа char, двоичное значение которой...

Хитрое поле - MS Access
Доброго дня всем. Подскажите можно ли, либо возможно ли вообще создать такого рода поле на форме, чтобы записать в данном поле значение,...


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

Или воспользуйтесь поиском по форуму:
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
19.10.2013, 19:57  [ТС]     Хитрое создание переменной #5
СПАСИБО!!!

Добавлено через 14 минут
Не знаю, не жрет компилятор

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class SimpleCat
 {
public:
SimpleCat (int age, int weight);
~SimpleCat();
int GetAge() { return itsAge; }
int GetWeight() { return itsWeight; }
void  KonstructFunction();
private:
int itsAge;
int itsWeight;
static int  konstruktor= 0;  static int  destruktor= 0;
 };
1>d:\проги\utetsca\utetsca\utetsca.cpp(23): error C2864: SimpleCat::konstruktor: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа
1>d:\проги\utetsca\utetsca\utetsca.cpp(23): error C2864: SimpleCat::destruktor: в пределах класса могут быть инициализированы только статические константные данные-члены целого типа

Добавлено через 1 минуту
А, щас я еще так попробую..

Добавлено через 1 минуту
ЕСТЬ!!!!!!!!!!!!!!

Добавлено через 1 минуту
Офигенно!!!!!!!!!!!!!!
Yandex
Объявления
19.10.2013, 19:57     Хитрое создание переменной
Ответ Создать тему
Опции темы

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