Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ковыряю книжку по C++, начинающий. / 25 сообщений из 31, страница 1 из 2
05.04.2021, 17:50
    #40059960
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Ниже рабочий код из книги, который работает.

Код: plaintext
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.
//: C11:HowMany.cpp
// A class that counts its objects
#include <fstream>
#include <string>
using namespace std;
ofstream out("HowMany.out");
class HowMany {
 static int objectCount;
public:
 HowMany() { objectCount++; }
 static void print(const string& msg = "") {
 if(msg.size() != 0) out << msg << ": ";
 out << "objectCount = "
 << objectCount << endl;
 }
 ~HowMany() {
 objectCount--;
 print("~HowMany()");
 }
};
//конец класса

/////////////////////////////////////////////////////////////////////////////////////////// 
int HowMany::objectCount = 0;  /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?
// Pass and return BY VALUE:
HowMany f(HowMany x) {             /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?
 x.print("x argument inside f()");   /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?
 return x;                                    /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?
}
///////////////////////////////////////////////////////////////////////////////////////////

// начало программы
int main() {
    out << "hi" << endl;
 HowMany h;
 HowMany::print("after construction of h");
 HowMany h2 = f(h);
 HowMany::print("after call to f()");
} ///:~



Если быть болгг точным - функция вне всего, это как?
Когда инициализация производится?
...
Рейтинг: 0 / 0
05.04.2021, 18:00
    #40059965
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник
Код: plaintext
1.
[b]int HowMany::objectCount = 0;  /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?


До начала работы main()

АСУ ТПшник
Код: plaintext
1.
HowMany f(HowMany x) {             /////// КОГДА ЭТО ВЫПОЛНЯЕТСЯ?


Когда вызовут f(), в твоем случае тут
АСУ ТПшник
Код: plaintext
1.
2.
3.
4.
int main() {
...
 HowMany h2 = f(h);
....

...
Рейтинг: 0 / 0
05.04.2021, 18:09
    #40059969
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Dima T,

я не пойму как функция может болтаться вне класса. Она же за пределами и функции входа и за пределами класса. Что это за место? К чему она относится? Это анонимная функция, ни к чему не принадлежащая? Типа глобальная анонимная или что?
...
Рейтинг: 0 / 0
05.04.2021, 18:24
    #40059975
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшникя не пойму как функция может болтаться вне класса.

Ты точно начал книжку читать с первой главы? Там где-нибудь точно должна описываться
структура Си программы. Объявление функций, реализация функций. И да, это не Ява. Функции
бывают просто функциями, а не методами классов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.04.2021, 18:26
    #40059976
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник
Dima T,

я не пойму как функция может болтаться вне класса. Она же за пределами и функции входа и за пределами класса. Что это за место? К чему она относится? Это анонимная функция, ни к чему не принадлежащая? Типа глобальная анонимная или что?
Почему анонимная? У нее есть имя - "f".

Ты пришел в С++ из Java? В чисто объектных языках действительно нельзя делать функции, только методы класса.
А в не-объектных языках нельзя делать классы с методами классов и есть только функции.
С++ гибридный язык, он может делать как методы класса, так и функции не относящиеся к какому-то классу. Эзотерически говоря можешь считать их методами принадлежащими воображаемому классу "моя программа". В официальной терминологии С++ это просто функция.
...
Рейтинг: 0 / 0
05.04.2021, 18:31
    #40059980
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
White Owl,
спасибо. доходчиво.

Тема исчерпана.
...
Рейтинг: 0 / 0
05.04.2021, 18:31
    #40059981
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшникНу был немного

А простые процедурные языки вообще никогда не изучал что ли?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.04.2021, 19:12
    #40059988
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Что я только не изучал... на чем я только не работал... интегратором же начинал для АСУ ТП.

Меня как раз сбило с толку, что тут классы намешаны с функциями.
Потом подумал - ну объявил ты заранее функцию, кого волнует какая она и где,
ее потом компилятор воткнет куда надо (типа инлайнит как бы),
Я бы вообще забил на функцию, но тут еще эта статик переменная, которая тоже не пойми когда инициализируется. Если ее попытаться при объявлении инициализировать, то компилятор не даст этого сделать.
Говорит что все нон-констант будь любезен "initialize out of line".

Тут у меня и закипело. Я начал думать - а почему так? Какого хрена я не могу по месту объявления инициализировать, а вне всего вообще - запросто. И вобщем мой хрупкий внутренний мир рассыпался.
...
Рейтинг: 0 / 0
05.04.2021, 19:14
    #40059989
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшникЯ бы вообще забил на функцию, но тут еще эта статик переменная, которая тоже не пойми
когда инициализируется.

Тогда гугли на тему "глобальные переменные в Си".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.04.2021, 19:15
    #40059990
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник

Тут у меня и закипело. Я начал думать - а почему так? Какого хрена я не могу по месту объявления инициализировать, а вне всего вообще - запросто. И вобщем мой хрупкий внутренний мир рассыпался.

Попробуй пометить эту переменную как inline -- тогда по идее сможешь.
...
Рейтинг: 0 / 0
05.04.2021, 21:59
    #40060012
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
petrav
АСУ ТПшник

Тут у меня и закипело. Я начал думать - а почему так? Какого хрена я не могу по месту объявления инициализировать, а вне всего вообще - запросто. И вобщем мой хрупкий внутренний мир рассыпался.

Попробуй пометить эту переменную как inline -- тогда по идее сможешь.

Инлайн переменная? Месье знает толк в извращениях :)
...
Рейтинг: 0 / 0
05.04.2021, 22:26
    #40060020
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Dima T
petrav
пропущено...

Попробуй пометить эту переменную как inline -- тогда по идее сможешь.

Инлайн переменная? Месье знает толк в извращениях :)

Да я сам в шоке, но нынче жизнь такая.

Код: plaintext
1.
2.
3.
4.
struct Foo
{
    static inline auto const MyStdString = "123"s;
};
...
Рейтинг: 0 / 0
06.04.2021, 11:43
    #40060094
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник,

У Вас ужасное форматирование. Читать тяжело. Если Вы работаете в VS, то рекомендую Вам CodeMaid .
...
Рейтинг: 0 / 0
06.04.2021, 11:49
    #40060096
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Dima T
petrav
пропущено...

Попробуй пометить эту переменную как inline -- тогда по идее сможешь.

Инлайн переменная? Месье знает толк в извращениях :)
+1)
...
Рейтинг: 0 / 0
06.04.2021, 11:49
    #40060097
АСУ ТПшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Это копипаста из книги в теги СОДЕ вставленная.
...
Рейтинг: 0 / 0
06.04.2021, 11:53
    #40060098
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник,
>Меня как раз сбило с толку, что тут классы намешаны с функциями.
Все меняется в этой лапше.
Уже вводятся пакеты, модули, пространства имен.
Поэтому глобальное уже не рекомендуется даже в Си
...
Рейтинг: 0 / 0
06.04.2021, 11:56
    #40060099
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник
Это копипаста из книги в теги СОДЕ вставленная.
тебе написали. Ты сам лапшекод не форматируешь.
Его причесывать надо после вставки.
...
Рейтинг: 0 / 0
06.04.2021, 15:39
    #40060171
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник

Если быть болгг точным - функция вне всего, это как?
Когда инициализация производится?


Парень, учи С++, читай книжки.

Прата
Дейтелы
Лимпман.

Одна из этих книг тебе нужна, ты должен прочитать их и постичь азы.
ПОТОМ программировать.
...
Рейтинг: 0 / 0
06.04.2021, 15:43
    #40060172
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
АСУ ТПшник,

Теги типа [b] нельзя ставить внутри секции кода, там никакие теги не работают.
Исправил.
...
Рейтинг: 0 / 0
06.04.2021, 17:15
    #40060189
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
В src работают теги выделения цветом.
...
Рейтинг: 0 / 0
06.04.2021, 22:26
    #40060229
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Basil A. Sidorov
В src работают теги выделения цветом.

Жалко только этих тегов в редакторе нет.
...
Рейтинг: 0 / 0
06.04.2021, 22:42
    #40060231
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
MasterZiv
...внутри секции кода, там никакие теги не работают...

Код: plaintext
1.
2.
3.
4.
5.
void foo{
  int i = 10; // int
  int j = 12; // Вся строка
  int k = i + j;
};



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
[src cpp]
void foo{
  >>>int<<< i = 10; // int
==>  int j = 12; // Вся строка
  int k = i + j;
};

[ /src]
...
Рейтинг: 0 / 0
06.04.2021, 22:51
    #40060233
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
да это неявные (ручные) теги, мало кто смотрит в "мануал" местного редактора
...
Рейтинг: 0 / 0
07.04.2021, 09:49
    #40060273
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
ъъъъъ,

Не знал, спасибо.
...
Рейтинг: 0 / 0
07.04.2021, 09:56
    #40060277
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ковыряю книжку по C++, начинающий.
Alex_Ustinov
да это неявные (ручные) теги, мало кто смотрит в "мануал" местного редактора

В мануал можно не лезть, достаточно увидеть в чужом посте и нажать "Цитировать", будет видно как автор этого добился.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ковыряю книжку по C++, начинающий. / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]