powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ковыряю книжку по C++, начинающий.
25 сообщений из 31, страница 1 из 2
Ковыряю книжку по C++, начинающий.
    #40059960
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниже рабочий код из книги, который работает.

Код: 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
Ковыряю книжку по C++, начинающий.
    #40059965
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшник
Код: 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
Ковыряю книжку по C++, начинающий.
    #40059969
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

Жалко только этих тегов в редакторе нет.
...
Рейтинг: 0 / 0
Ковыряю книжку по C++, начинающий.
    #40060231
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Ковыряю книжку по C++, начинающий.
    #40060233
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да это неявные (ручные) теги, мало кто смотрит в "мануал" местного редактора
...
Рейтинг: 0 / 0
Ковыряю книжку по C++, начинающий.
    #40060273
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

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

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


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