Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
Возник вопрос такого рода. Есть метод который возвращает локальную переменную(знаю зло). Однако Код: plaintext 1. 2. 3. 4. 5. если мы напишем так тогда bool &ref = Func(); Тогда при первом перераспределении памяти на стеке ссылка будет не валидна. Однако если мы напишем так const bool &ref = Func(); то в стандарте говориться что временная переменная будет жить, пока будет жить ссылка. А теперь сам вопрос если сделать метод константным Код: plaintext 1. 2. 3. 4. 5. мы сможем сделать на него ссылку только константную const bool& ref = F(); и временная переменная будет жить столько же сколько ссылка. а как эта функция может повести себя в таком условии Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Может выдать мусор ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 20:42 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
goodbenyaВозник вопрос такого рода. Есть метод который возвращает локальную переменную(знаю зло). ... Однако если мы напишем так const bool &ref = Func(); то в стандарте говориться что временная переменная будет жить, пока будет жить ссылка. Дайте, пожалуйста, ссылку на соответствующий пункт стандарта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 22:09 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
MozokgoodbenyaВозник вопрос такого рода. Есть метод который возвращает локальную переменную(знаю зло). ... Однако если мы напишем так const bool &ref = Func(); то в стандарте говориться что временная переменная будет жить, пока будет жить ссылка. Дайте, пожалуйста, ссылку на соответствующий пункт стандарта. Вы от него хотите ссылку на prolongation of temporary object by const reference или на то что возвращать локальную переменную это зло? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2013, 22:33 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
goodbenyaЕсть метод который возвращает локальную переменную(знаю зло) ... const bool &ref = Func(); то в стандарте говориться что временная переменная будет жить, пока будет жить ссылка. Как-то вы слишком легко перескочили от локальных переменных в вашем коде к временным переменным в стандарте А ведь это вообще концептуально разные вещи. Если говорить конкретно то код Код: plaintext 1. внутри выглядит так: Код: plaintext 1. 2. Таким образом, говоря строгим научным языком, языку С++ по барабану во что вы сохраняете ссылку на локальную переменную возвращенную из функции. Там по-любому уже мусор. А стандарт говорить про другую ситуацию, когда функция возвращает значение (а не ссылку), а оно присваивается в ссылку. Тогда код созданный компилятором будет таким: Код: plaintext 1. 2. и temp уничтожится только после того как ref выйдет из области видимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2013, 01:40 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
goodbenya, Ты не сделал метод константным. Ты сделал константным тип возврата. Но возврат ссылки на локальную переменную в любом случае невалиден, константная ссылка или нет -- всё равно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2013, 11:03 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
Спасибо большое . Теперь понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2013, 15:06 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
Если коротко то делай так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2013, 16:38 |
|
||
|
const bool &ref на const bool Func();
|
|||
|---|---|---|---|
|
#18+
prolongation of temporary objectВы от него хотите ссылку на prolongation of temporary object by const reference или на то что возвращать локальную переменную это зло? :) Anatoly Moskovsky уже полностью ответил на мой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2013, 21:45 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38444139&tid=2019899]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 264ms |

| 0 / 0 |
