powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Простой вопрос
54 сообщений из 54, показаны все 3 страниц
Простой вопрос
    #39630851
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый программисты

Подскажите пожалуйста что обозначает данный код в С++

Код: plaintext
1.
2.
3.
   void t(std::string &s) {

   }




std::string &s - имеется ввиду эта часть

И чем этот код отличается от

Код: plaintext
1.
2.
3.
   void t(std::string s) {

   }




спасибо.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630858
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Простой вопрос
    #39630867
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо я понял что в случае

std::string &s

будет передача по ссылке

Код: plaintext
1.
2.
3.
4.
   
   void t(std::string &s) {
       s = "a";
   }



Правильно я понимаю что вызывающий код

std::string b;
t(b);

Получит на выходе в b значение "a" ?

И чем отличается std::string *s от std::string& s ?
...
Рейтинг: 0 / 0
Простой вопрос
    #39630868
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen, в первом случае передача параметра по ссылке, а во втором - по значению. Причем, в первом случае функция может изменить значение источника, передаваемого в функцию по ссылке.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630870
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenИ чем отличается std::string *s от std::string& s ?Для того, чтобы понять отличия указателя и ссылки, необходимо тщательно изучить перегрузку операторов.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630871
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devsemen.s.semenИ чем отличается std::string *s от std::string& s ?Для того, чтобы понять отличия указателя и ссылки, необходимо тщательно изучить перегрузку операторов.

А можно хотя бы примерно описать отличие ?

Или дать ссылки почитать

Буду очень благодарен.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630872
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenПравильно я понимаю что вызывающий код

std::string b;
t(b);

Получит на выходе в b значение "a" ?
Правильно. Это можно не спрашивать, а просто запустить и посмотреть.

semen.s.semenИ чем отличается std::string *s от std::string& s ?
Если по-простому: указатель может указывать в никуда, т.е. NULL, а ссылка не может.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630875
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenrdb_devпропущено...
Для того, чтобы понять отличия указателя и ссылки, необходимо тщательно изучить перегрузку операторов.

А можно хотя бы примерно описать отличие ?

Или дать ссылки почитать

Буду очень благодарен.
Гугли "С++ указатели" и "С++ ссылки"
...
Рейтинг: 0 / 0
Простой вопрос
    #39630896
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsemen.s.semenпропущено...


А можно хотя бы примерно описать отличие ?

Или дать ссылки почитать

Буду очень благодарен.
Гугли "С++ указатели" и "С++ ссылки"

А смысл?

"Т. е. указатель или ссылка (как мы уже знаем, указатели и ссылки — это два синтаксически разных способа в C++ выразить понятие адреса).
"
...
Рейтинг: 0 / 0
Простой вопрос
    #39630904
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЕсли по-простому: указатель может указывать в никуда, т.е. NULL, а ссылка не может.Да ладно?...
Код: plaintext
1.
int & rInt = *(int*)NULL;

Основное различие в том, что ссылка должна быть обязательно проинициализирована выражением, расценивающимся как lvalue.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630908
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devDima TЕсли по-простому: указатель может указывать в никуда, т.е. NULL, а ссылка не может.Да ладно?...
Код: plaintext
1.
int & rInt = *(int*)NULL;

Основное различие в том, что ссылка должна быть обязательно проинициализирована выражением, расценивающимся как lvalue.
Попробуй написать свой пример без использования указателей
...
Рейтинг: 0 / 0
Простой вопрос
    #39630909
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devDima TЕсли по-простому: указатель может указывать в никуда, т.е. NULL, а ссылка не может.Да ладно?...
Код: plaintext
1.
int & rInt = *(int*)NULL;

Основное различие в том, что ссылка должна быть обязательно проинициализирована выражением, расценивающимся как lvalue.

Может быть как rvalue ?
...
Рейтинг: 0 / 0
Простой вопрос
    #39630911
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин"Т. е. указатель или ссылка (как мы уже знаем, указатели и ссылки — это два синтаксически разных способа в C++ выразить понятие адреса).
"
Не совсем. Указатель можно менять, а ссылка это только конкретный адрес. Лучше все-таки почитать про указатели.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630924
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
std::string &s - имеется ввиду эта часть

Параметр функции, с названием s, типа "ссылка на std::string".

И чем этот код отличается от

Код: plaintext
1.
   void t(std::string s) {




Здесь параметр передаётся по значению, т.е. копируется.
Выше параметр передаётся по ссылке, только ссылка передаётся, сам объект НЕ копируется.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630948
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenrdb_devпропущено...
Для того, чтобы понять отличия указателя и ссылки, необходимо тщательно изучить перегрузку операторов.

А можно хотя бы примерно описать отличие ?

Или дать ссылки почитать

Буду очень благодарен.

Указатель -- это адрес объекта определённого типа, который не обязательно установлен (адрес может быть пустым, не ссылаться ни на какой объект). Указатель за время жизни (переменной типа указателя) может ссылаться на несколько объектов этого типа.
Т.е. может ссылаться на от 0 до бесконечности разных объектов данного типа. К указателям применимы операции адресной арифметики (увеличение и уменьшение указателей, вычисление разницы между двумя указателями).

Ссылка -- это похожий, но существенно отличающийся от указателя, производный тип данных,
Ссылку часто понятийно представляют как другое имя объекта.
По сути ссылка -- это константный и всегда разыменованный указатель.
(разыменование -- это операция * , переход от указателя к значению объекта, на который указывает указатель).
Поскольку ссылка -- это константный указатель, сделать её ссылающейся на другой объект невозможно.
Также по стандарту языка С++ ссылка ОБЯЗАНА ссылаться на валидный и существующий объект данного типа.
Поскольку ссылка -- это разыменованный указатель, она выступает в выражениях как значение данного типа,
и к ссылке неприменимы операции адресной арифметики (для применения этих операций от ссылки нужно взять адрес, т.е. получить указатель).

Также идеологически в основном указатели применяются для оперирования данными, а ссылки -- для организации методов классов и функций, оперирующих классами.

То, что специальный указатель this оформлен именно как указатель, это ошибка дизайна С++, он должен был бы быть ссылкой.
Во многих остальных случаях где нужны ссылки на объекты в операциях и т.д. используются именно ссылки, а не указатели.
...
Рейтинг: 0 / 0
Простой вопрос
    #39630953
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Огромное спасибо

Все доходчиво и по делу.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631026
Ух ты, это я удачно на этот форум зашел. Сам как раз недавно разбирался с ссылками и указателями в C++, а тут такая тема.
MasterZiv, огромное спасибо за доходчивое объяснение.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631048
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

расскажи про ссылки, пожалуйста. Не в контексте "ссылка как описатель аргумента функции", а в контексте "ссылка как альтернативное имя объекта", например:

Код: plaintext
1.
2.
int a;
int & b = a;



Если объект b - всего лишь синоним объекта a, то для чего он этот синоним вообще нужен? Ну, в каком случае имеет смысл использовать b вместо использования a?
...
Рейтинг: 0 / 0
Простой вопрос
    #39631052
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияНу, в каком случае имеет смысл использовать b вместо использования a?

Я, например, использую тупо для сокращения кода:
Код: sql
1.
2.
3.
MyClass& var = Some->super()->expression[to].getIt();
var.a = 1;
var.b = 2;


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Простой вопрос
    #39631085
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКотовасияНу, в каком случае имеет смысл использовать b вместо использования a?

Я, например, использую тупо для сокращения кода:
Код: sql
1.
2.
3.
MyClass& var = Some->super()->expression[to].getIt();
var.a = 1;
var.b = 2;



Понятно, чисто С++-шная фишка. В Delphi, C# и Java переменная экземпляра класса изначально является ссылкой (э... или указателем, ибо там нет разницы), поэтому там можно было бы просто записать:

Код: sql
1.
2.
3.
MyClass /*&*/ var = Some->super()->expression[to].getIt();
var.a = 1;
var.b = 2;


, без & .
...
ОК, сразу понятно, что также указатели полезны в общем случае, когда нужен доступ к объекту, например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int & f_max(int & a, int &b) {
	if (a > b)
		return a;
	else
		return b;
}
...
	int a = 1; 
	int b = 2; 
...
	f_max(a, b) = 3; // Заменить максимальное значение из a, b на 3.




Спасибо.
А еще в каких случаях?
...
Рейтинг: 0 / 0
Простой вопрос
    #39631088
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Котовасия,

Плюсы прекрасны )
...
Рейтинг: 0 / 0
Простой вопрос
    #39631091
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenКотовасия,

Плюсы прекрасны )

Да. Сейчас сын в ВУЗе изучает, я сбоку пристроился... :)
...
Рейтинг: 0 / 0
Простой вопрос
    #39631096
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Котовасияsemen.s.semenКотовасия,

Плюсы прекрасны )

Да. Сейчас сын в ВУЗе изучает, я сбоку пристроился... :)

А я вот спрашиваю себя - ну и нахера я стока времени на Java потратил )
...
Рейтинг: 0 / 0
Простой вопрос
    #39631102
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще указатель это массив
Код: plaintext
1.
2.
3.
int f(int* a) {
   return *a + a[1] + *(a + 2);
}
...
Рейтинг: 0 / 0
Простой вопрос
    #39631106
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TА еще указатель это массив
...

Вроде все книжки формулируют эту мысль с точность до наоборот "Массив это указатель"

Любой массив это указатель
Но НЕ каждый указатель, это массив
...
Рейтинг: 0 / 0
Простой вопрос
    #39631117
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон,
Котовасия...
ОК, сразу понятно, что также указатели ссылки полезны в общем случае, когда нужен доступ к объекту, например:
...
...
Рейтинг: 0 / 0
Простой вопрос
    #39631120
cronix111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я помню:
std::string s - вызывается конструктор копии и создается новый объект.
std::string &s - не вызывается конструктор копии и новый объект не создается, т.к. по сути, как писали выше, это неизменяемый указатель.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631255
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cronix111std::string s - вызывается конструктор копии и создается новый объект.

Это важный момент, кстати. Для понимания лучше написать класс, который в конструкторе и деструкторе выкидывает сообщение об этом ("ctor"/"dtor"), например, в поток, а потом объект этого класса попробовать попередавать в разных вариантах в качестве параметра в функции. Потом добавить наследование, виртуализацию, попередавать объекты дочерних классов и так далее.
И ещё полезно посмотреть под дебагом ассемблерный код.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631319
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКотовасияНу, в каком случае имеет смысл использовать b вместо использования a?

Я, например, использую тупо для сокращения кода:
Код: sql
1.
2.
3.
MyClass& var = Some->super()->expression[to].getIt();
var.a = 1;
var.b = 2;




Да, для сокращения кода самое очевидное использование.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631320
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenМожет быть как rvalue ?Нет, именно как lvalue!
lvalue и rvalue, это не синонимы для левой и правой частей выражения.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631322
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДа ладно?...
Код: plaintext
1.
int & rInt = *(int*)NULL;

Основное различие в том, что ссылка должна быть обязательно проинициализирована выражением, расценивающимся как lvalue.
Попробуй написать свой пример без использования указателей [/quot]Зачем?
...
Рейтинг: 0 / 0
Простой вопрос
    #39631325
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияMasterZiv,

расскажи про ссылки, пожалуйста. Не в контексте "ссылка как описатель аргумента функции", а в контексте "ссылка как альтернативное имя объекта", например:

Код: plaintext
1.
2.
int a;
int & b = a;



Если объект b - всего лишь синоним объекта a, то для чего он этот синоним вообще нужен? Ну, в каком случае имеет смысл использовать b вместо использования a?

Ну, общефилософски я бы не пытался рассуждать в сторону анализа.
Я бы рассуждал синтетически, у вас есть такая возмжоность в языке, вы можете применять её там, где вам удобно.
В любой момент вы можете присвоить объекту ещё одно имя. и даже несколько.

Может это использоваться например и в создании аналогов С-шных макросов, которые реализуют новые языковые конструкции, например, WITH() какой нибудь, TRY...FINALLY и так далее.

Сотни применений разных.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631327
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenКотовасияпропущено...


Да. Сейчас сын в ВУЗе изучает, я сбоку пристроился... :)

А я вот спрашиваю себя - ну и нахера я стока времени на Java потратил )

Прекрасно слышать слова твои !
...
Рейтинг: 0 / 0
Простой вопрос
    #39631328
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenКотовасия,

Плюсы прекрасны )
Это ты еще до ссылок на rvalue и шаблонов перемещения не дошел...
...
Рейтинг: 0 / 0
Простой вопрос
    #39631333
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenКотовасия,

Плюсы прекрасны )На, прослезись от счастья! :)
Декларатор ссылки Rvalue (&&); конструктор перемещения; точная пересылка; RVO/NRVO и прочее, и прочее...
...
Рейтинг: 0 / 0
Простой вопрос
    #39631340
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenА я вот спрашиваю себя - ну и нахера я стока времени на Java потратил )

великий английский писатель Френцх ПровербA man who knows two languages is worth two men.к программистам это относится как никогда кстати.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631341
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devНа, прослезись от счастья! :)и это он ещё шаблоны не видел
...
Рейтинг: 0 / 0
Простой вопрос
    #39631350
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Код: sql
1.
2.
3.
MyClass& var = Some->super()->expression[to].getIt();
var.a = 1;
var.b = 2;

А я "иногда" даже так делаю, чтобы в объемной реализации поменьше символов печатать и чтобы код был более читаемым:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
MyClass& __fastcall operator+= (const MyClass & add)
{
  MyClass & me = *this;
  .
  .
  .
  return me;
}
...
Рейтинг: 0 / 0
Простой вопрос
    #39631352
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbrdb_devНа, прослезись от счастья! :)и это он ещё шаблоны не виделТам и увидит! И std::move и std::forward и многое другое. :)
...
Рейтинг: 0 / 0
Простой вопрос
    #39631585
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devsemen.s.semenМожет быть как rvalue ?Нет, именно как lvalue!
lvalue и rvalue, это не синонимы для левой и правой частей выражения.

Расскажите, пожалуйста что Вы имеете ввиду

По моей информации

Любое выражение в C++ относится к категории lvalue(левостороннее выражение) либо rvalue (правостороннее выражение). lvalue выражение это объект, который имеет имя. Все переменные являются lvalue. rvalue — это временный объект, которые не существует за пределами выражения, которое его создало. В следующем примере a является lvalue, а результат выражения 2 + 2 — rvalue.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631612
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semen, вот тут, как раз, есть одна особенность. Обычно, ссылка инициализируется, как ссылка на lvalue, но не всегда. Например, при передаче значения из перегруженного для класса оператора "+", может быть возвращена ссылка на временный результат - rvalue (временный экземпляр класса) и этот rvalue не обязательно должен быть const, так как в современном стандарте C++ существует такое понятие, как "конструктор пересылки" (не путать с конструктором копии). Задача конструктора пересылки - оптимизация передачи результата в lvalue. Простой пример - допустим, у тебя есть некий класс, в котором одним из членов является указатель на какой-то массив данных и чтобы не копировать весь этот массив данных из временного объекта rvalue, конструктор пересылки может скопировать к себе указатель не создавая копию этого массива и "обнулить" указатель во временном объекте, чтобы деструктор временного объекта не освободил память с массивом данных.
...
Рейтинг: 0 / 0
Простой вопрос
    #39631951
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devsemen.s.semen, вот тут, как раз, есть одна особенность. Обычно, ссылка инициализируется, как ссылка на lvalue, но не всегда. Например, при передаче значения из перегруженного для класса оператора "+", может быть возвращена ссылка на временный результат - rvalue (временный экземпляр класса) и этот rvalue не обязательно должен быть const, так как в современном стандарте C++ существует такое понятие, как "конструктор пересылки" (не путать с конструктором копии). Задача конструктора пересылки - оптимизация передачи результата в lvalue. Простой пример - допустим, у тебя есть некий класс, в котором одним из членов является указатель на какой-то массив данных и чтобы не копировать весь этот массив данных из временного объекта rvalue, конструктор пересылки может скопировать к себе указатель не создавая копию этого массива и "обнулить" указатель во временном объекте, чтобы деструктор временного объекта не освободил память с массивом данных.

Ничего не понял

Если не сложно - дайте Ваше строгое определение того что такое rvalue и lvalue

Также буду благодарен за описание того как работает std::move and std::forward
...
Рейтинг: 0 / 0
Простой вопрос
    #39631952
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbrdb_devНа, прослезись от счастья! :)и это он ещё шаблоны не видел

Видел
...
Рейтинг: 0 / 0
Простой вопрос
    #39632032
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenCEMbпропущено...
и это он ещё шаблоны не видел

Видел
boost посмотри
...
Рейтинг: 0 / 0
Простой вопрос
    #39632040
semen.s.semen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tsemen.s.semenпропущено...


Видел
boost посмотри

И буст видел
...
Рейтинг: 0 / 0
Простой вопрос
    #39632042
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenИ буст видел
Поздравляю, я видел и больше видеть не хочу. Изучать портянки на 1000+ строк с сообщением ошибки компиляции из-за одной неверной буковки в коде - не мое.
...
Рейтинг: 0 / 0
Простой вопрос
    #39632049
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenТакже буду благодарен за описание того как работает std::move and std::forward
Отличная книга в т.ч. про это https://www.ozon.ru/context/detail/id/34747131/

Букав немного, советую найти и почитать.
...
Рейтинг: 0 / 0
Простой вопрос
    #39632083
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T...boost посмотри
Имхо, бустом просто страшилка. Народ на ЛОРе, когда в друг дружку какашки кидает. Новичков опять же пугают.
Реально возможно никто не использует. :)
...
Рейтинг: 0 / 0
Простой вопрос
    #39632132
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semen.s.semenЕсли не сложно - дайте Ваше строгое определение того что такое rvalue и lvalue

Также буду благодарен за описание того как работает std::move and std::forwardШо, опять? :)
Держи: 21344431
...
Рейтинг: 0 / 0
Простой вопрос
    #39632145
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияРеально возможно никто не использует. :)я использую, мало, но рад. Радует то, что можно взять только нужный кусок от буста, не надо тащить всё. Использовал несколько раз для парсинга xml-ек. И для чего-то ещё, уже не помню. Хотел недавно взять для работы с графами, но он не подошёл по религиозным причинам

Кроме того, в бусте вроде как давно уже сделано то, что потом стало появляться в 11/14/17. В общем, если чего-то не хватает в стандарте, можно посмотреть в бусте.

rdb_devДержии вот это
...
Рейтинг: 0 / 0
Простой вопрос
    #39632517
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semen.s.semenЛюбое выражение в C++ относится к категории lvalue(левостороннее выражение) либо rvalue (правостороннее выражение). lvalue выражение это объект Фигасе новости: выражение ­— это объект!
...
Рейтинг: 0 / 0
Простой вопрос
    #39632542
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest, условно, lvalue можно назвать именованным объектом в памяти. Еще можно создать обёртку для int, которая мало чем будет отличаться от обычного int:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
struct MyInteger
{
  int value;
  MyInteger();
  MyInteger(int);
  ~MyInteger();
  MyInteger& operator= (int);
  MyInteger& operator+= (int);
  operator int ();
  .
  .
  .
}
...
Рейтинг: 0 / 0
Простой вопрос
    #39632594
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_devЕще можно создать обёртку для int, которая мало чем будет отличаться от обычного intЭм. Можно. А зачем?
...
Рейтинг: 0 / 0
Простой вопрос
    #39632666
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guest, чтобы наглядно продемонстрировать условность понятия "объект" - что в скомпилированном виде экземпляр MyInteger и операции над ним будут неотличимы от обычного int.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Простой вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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